[octave/matlab] fnction qui retourne un vecte
Swiss Knight
Messages postés
1956
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
existe-t-il une fonction qui me permette d'avoir un vecteur de N valeurs aléatoires à partir d'une valeur d'une moyenne connue, et d'un écart type connu ?
par exemple ;
A=[1,2,6,7,89,43,123,32,13]
Vecteur = fonction (mean(A),std(A), N)
Et je veux qu'après je retrouve mean(V)=mean(A) et std(V)=std(A)
j'ai rien trouvé de concluant jusqu'à maintenant et pensez bien que la matrice A ici n'est là qu'en exemple, j'ai vraiment beaucoup beaucoup de valeurs en réalité.
merci beaucoup !
existe-t-il une fonction qui me permette d'avoir un vecteur de N valeurs aléatoires à partir d'une valeur d'une moyenne connue, et d'un écart type connu ?
par exemple ;
A=[1,2,6,7,89,43,123,32,13]
Vecteur = fonction (mean(A),std(A), N)
Et je veux qu'après je retrouve mean(V)=mean(A) et std(V)=std(A)
j'ai rien trouvé de concluant jusqu'à maintenant et pensez bien que la matrice A ici n'est là qu'en exemple, j'ai vraiment beaucoup beaucoup de valeurs en réalité.
merci beaucoup !
A voir également:
- [octave/matlab] fnction qui retourne un vecte
- Ecran retourne - Guide
- Gnu octave - Télécharger - Édition & Programmation
- Retourner un pdf - Forum Graphisme
- R retourné - Forum Windows
- Application qui retourne les photos - Accueil - Photo
2 réponses
Bonjour,
Tu peux faire:
Mais si ce que tu voulais faire c'était générer des nombres aléatoires suivant une loi normale de moyenne moy et d'écart-type sigma alors la syntaxe est:
Tu peux faire:
vecteur = randn(N,1) %loi normale d'écart-type 1 et de moyenne nulleou
vecteur = rand(N,1) %loi uniforme entre 0 et 1et forcer les moyenne et écart-type aux valeurs désirées
vecteur = vecteur/std(vecteur)*ecart_type_voulu %on force l'écart-type à la valeur désirée vecteur = vecteur-mean(vecteur)+moyenne_voulue %on force la moyenne à la valeur désirée
Mais si ce que tu voulais faire c'était générer des nombres aléatoires suivant une loi normale de moyenne moy et d'écart-type sigma alors la syntaxe est:
vecteur = moy+sigma*randn(N,1)
Salut et merci beaucoup de ta réponse !
tu m'as fait découvrir deux fonctions très utiles et ta solution fonctionne à merveille...pour une très grande quantité de nombres.
Par contre, curieusement (ou pas) pour une dizaine de nombre, c'est très approximatif... je pense que c'est "normal" mais c'est bizarre quand même...
Tu saurais l'expliquer ?
tu m'as fait découvrir deux fonctions très utiles et ta solution fonctionne à merveille...pour une très grande quantité de nombres.
Par contre, curieusement (ou pas) pour une dizaine de nombre, c'est très approximatif... je pense que c'est "normal" mais c'est bizarre quand même...
Tu saurais l'expliquer ?
ba oui, c'est on ne peut plus logique.
une variable aléatoire ne correspond à ses caractéristiques que dans la limite des grand nombre. Et encore, elle ne fait que tendre. 10 est loin d'être un grand nombre. Si tu veux le résultat exacte de ce que tu attends, la méthode n'est pas bonne (mais je ne vois pas ce que tu cherches à faire au final). Si tu veux le résultat exacte pour toutes les tailles de vecteur, il faut faire un truc du genre :
vec_tmp=rand(N,1);
vecteur=moy-mean(vec_tmp)+(dev/std(vec_tmp))*vec_tmp;
(à vérifier et corriger pour l'écart type, je ne suis pas sur du tout).
une variable aléatoire ne correspond à ses caractéristiques que dans la limite des grand nombre. Et encore, elle ne fait que tendre. 10 est loin d'être un grand nombre. Si tu veux le résultat exacte de ce que tu attends, la méthode n'est pas bonne (mais je ne vois pas ce que tu cherches à faire au final). Si tu veux le résultat exacte pour toutes les tailles de vecteur, il faut faire un truc du genre :
vec_tmp=rand(N,1);
vecteur=moy-mean(vec_tmp)+(dev/std(vec_tmp))*vec_tmp;
(à vérifier et corriger pour l'écart type, je ne suis pas sur du tout).