Création
d'entreprise
Posez votre question Signaler

Matlab: générer une matrice de nb aléatoire

popeye451 2Messages postés 14 février 2008Date d'inscription - Dernière réponse le 8 févr. 2011 à 14:16
Bonjour,
Débutant sur matlab, je cherche a créer une matrice de nb aléatoire (10 lignes 1 colonne) a partir d'une moyenne et d'un écart type.
J'ai fait les aides help rand, j'a rien trouvé de correct la dedans.....
Quelqu'un peut il m'aider?
Merci d'avance!
Lire la suite 

Matlab: générer une matrice de nb aléatoire »

19 réponses
Réponse
+3
moins plus
Pour un écart type et une moyenne, il faut utiliser une loi normale de nombre aléatoire, donc "randn()"
ensuite, si ton écart type est s, et ta moyenne X, il suffit de faire :
M=s*randn(10,1)+X
Ajouter un commentaire
Réponse
+1
moins plus
ce que je veux faire c la simulation du produit de plusieurs variables aléatoires..voir 10 par exemple , en sachant que mes variables aléatoires sont des vecteurs.
effectivement tu as raison, je peux simuler une matrice de 10 colonnes, puis je fais le produit des 10 colonnes pour avoir un seul vecteur a la fin, bref....
tu as une idée de comment faire une représentation graphique de cette simulation de loi normale ??
etant donné qu'il existent des fonctions multiples sur matlab ?? chacune avec des paramètres spécifiques ...plot, normplot,plotbox....
"merci encore"
Ajouter un commentaire
Réponse
+0
moins plus
je pense que c'est un peu plus compliqué que ça :
avec la formule : M=s*randn(10,1)+X
ta matrice sera composée de nombres aléatoires compris entre X-s et X+s.
Et dans ce cas, la moyenne sera bien X mais l'écart-type ne sera surement pas s.
Il faut chercher un tout petit peu plus loin je pense. Mais vous etes sur la bonne voie...
B.
Ajouter un commentaire
Réponse
+0
moins plus
j'ai fait un randn pour tester, et le valeurs ne sont pas comprises entre -1 et +1. Bon, pour l'écart type, en effet, je ne suis plus très sur...
ça doit resembler, mais il faut peut être des facteurs correctifs. Déjà, je suppose qu'il soit de 1 pour randn (ce qui n'est pas évident).
pour trouver la solution, regarde là:
http://fr.wikipedia.org/wiki/Fonction_gaussienne
Et fait un changement de repère x->X×s
à mon avis, la simple multiplication suffit.
Ajouter un commentaire
Réponse
+0
moins plus
dfésolé de t'avoir induit en erreur.
c'est moi qui ai mal lu.

j'ai lu RAND là où il était écrit RANDN.
et RANDN te renvoie bien une distributuion normale de moyenne 0 et écart-type 1. donc s*randn donne une distribution normale d'écart-type s.
et donc X + s*randn(10,1) te donne un vecteur de 10 éléments de moyenne X et d'écart-type s

Autant pour moi, ça m'apprendra à faire aller ma grrande gueule

B.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour;

voilà, je me suis trouvé fâce à un problème qui est: générer une matrice quasi-orthogonale pour l'utiliser dans Matlab;
le problème c'est que je connais les matrices orthogonales mais quasi-orthogonale est ce que ça veut dire que les vecteurs colonnes ne sont pas de normes 1 ? et puis j'ai besoin d'une matrice non carrée, par exemple 3 lignes 4 colonnes, est ce que c'est faisable? je n'arrive pas à trouver un exemple

merci beaucoup;
Ajouter un commentaire
Réponse
+0
moins plus
pour la matrice non caré : aucun souci en matlab, par contre pour tes histoire d'orthogonalité, je ne sais pas.
Ajouter un commentaire
Réponse
+0
moins plus
Merci à tous, en fait j'ai trouvé comment générer une matrice orthogonale,on entre une matrice A aléatoirement et on utilise la commande "qr" qui écrit cette matrice sous forme de produit d'une matrice orthogonale Q et une matrice triangulaire R:
>> [Q,R]=qr(A);
On peut alors récupérer Q la matrice orthogonale.
Ajouter un commentaire
Réponse
+0
moins plus
slt a tt, je suis débutante en matlab é g bezion de l'instruction ki m permet de tester l'aurthogonalité entre 2 matrice données..
merci de votre aide
FEFE - 25 avril 2008 à 15:24
bonjour,

on ne parle pas de l'orthogonalité de deux matrices mais bien d'une matrice : une matrice A est dite orthogonale si At * A = I où At est la transposée de A et I la matrice identité.
sous matlab, il suffit donc de réaliser le produit At * A (il existe une commande simple pour la transposition que vous trouverez aisément dans l'aide) et de vérifier s'il est égal à l'unité.
une caractéristique qui découle de la définition est que A-1 = At où A-1 est l'inverse de A. vous pouvez aussi vérifier cette égalité. sous matlab, la commande pour l'inverse est inv(A) il me semble.

F.
Ajouter un commentaire
Réponse
+0
moins plus
salut


Je voudrais bien savoir comment peut on déterminer la matice orhtogonale Aorth d'une matrice A donnée pour vérifier la relation A'*Aorth=0 sachant que A' : est la matrice tranposée de A


Merci
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
j'utilise matlab pour la simulation d'une loi normal;
le travail qui a été demandé est de simuler le produit de 2 loi normal centrées réduites, avec N=100 (pour permettre de faire une représentation graphique).
j'ai trouvé la fonction normrnd(MU,SIGMA,m,n) , si je mets m=100 et n=1 j'obtiens un vecteur U1 de 100 valeurs chacune suit une loi normal. je fais de meme pour U2
le probleme c que je peux pas faire le produit de U1*U2 car le produit de de matrice doit respecter la dimension (m,n)*(n,m) moi j'ai (100,1)*(100*1) ca marchera pas.
et si je fais (100,1)*(1*100) j'aurai une matrice de (100*100)
bref... je dois trouver un moyen de multiplier chaque composante de u1 avec la composante de u2 c'est a dire U1[i]*u2[i] pour obtenir a la fin un vecteur de 100 composante et le representer graphiquement.

si vous avez une solution je vous remercie infiniment.
Ajouter un commentaire
Réponse
+0
moins plus
utilise l'opérateur .* :
U1.*U2
En général, fonctionne avec tout les opérateurs : ./ .^
Ajouter un commentaire
Réponse
+0
moins plus
Je n'ai pas tout compris à ton histoire de généralisation.
Je pense que sinon, tu peux stocker tes vecteurs dans une seul matrice pour généraliser.
Ajouter un commentaire
Réponse
+0
moins plus
Je ne sais pas pour le tracé, ça dépend de ce que tu veux obtenir.
Ajouter un commentaire
Réponse
-1
moins plus
Super!

Merci beaucoup de ta rapidité!!!!!
je vais pouvoir avancer....
Ajouter un commentaire
Réponse
-1
moins plus
salut,
ca marche !!! merci bcp...j'allais faire une boucle imbriqué XD
g encore une autre question : si je voudrai générer n vecteur pour généraliser, ya-t-il un moyen d'affecter a n une valeur différente a chaque fois comme entrée ?? ou la seule possibilité est de les générer manuellement cad U1,U2....Un ??
je voulais faire une représentation graphique pour ce que g fait tout à l'heure , mais j'ai trouvé plusieurs fonction, normplot...et plusieurs fonction de plot.. je sais pas laquel utiliser ??

je vous remercie.
faffa - 8 févr. 2011 à 14:02
Bonjour,
svp j'ai besoin de votre aide,
comment généré un vecteur ( de 20 élément par exemple) de variable aléatoire suivant une loi donnée, par exemple une loi normale. La contrainte que j'ai est que ma variable varie entre 0 et 1.
famma85 - 8 févr. 2011 à 14:16
Pour une loi normal vous avez 'randn' et de plus elle génère des nombres centré, donc moyenne null et une variance de 1, vous n'avez qu'a faire Vect=randn(20,1), si vous désiré avoir des valeur comprise entre des valeur précise vous pouvez metre Vect=Mean+sqrt(Var)*randn(20,1) avec mean est la moyenne et Var est la variance,.
pour une loi uniforme faire : Vect=rand(20,1)..
j'espere que cela poura vous aidez faffa..
Ajouter un commentaire
Ce document intitulé « matlab: générer une matrice de nb aléatoire » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?