-1

Je sais que ce genre de questions a peut-être déjà trouvé une réponse, mais je suis débutant en matlab, alors veuillez répondre à mes questions.
Je voulais générer une matrice 11 * 12 à partir d'un ensemble de valeurs. J'ai cinq vecteurs différents nommés X, Y Z, u, v.
mon code est:
A = zéros (12,11);Pourquoi le code ne donne pas de bons résultats Matlab?

for i=1:6 
A=[X(i) Y(i) Z(i) 1 0 0 0 0 (-u(i)*X(i)) (-u(i)*Y(i)) (-u(i)*Z(i)),0 0 0 0 X(i) Y(i) Z(i) 1 (-v(i)*X(i)) (-v(i)*Y(i)) (-v(i)*Z(i))]; 
end 

Ici, pour chaque itération, je veux remplir deux lignes. Donc, il devient 12 lignes au total. Mais le problème est que
1. il me donne 22 * ​​1 matrice
2. Il donne de mauvaises valeurs
Cela signifie qu'il ajoute des colonnes dans chaque itération que je ne veux pas.
Veuillez m'aider à trouver une matrice 11 * 12. Merci

+0

Pouvez-vous fournir les valeurs de «X, Y, Z, u, v» ou au moins leurs dimensions? – brainkz

Répondre

0

Vous attribuez une nouvelle matrice à A à chaque itération, ce qui vous donnera ce que vous obtenez.

Ce que vous voulez est de remplacer les lignes à chaque itération. Vous pouvez indexer la matrice pour ce faire:

A(1,:) = [1 2 3 4]; 

Ceci, par exemple, remplacera la première ligne avec les valeurs données. Vous pouvez donc utiliser

A(i*2-1,:)=[X(i) Y(i) Z(i) 1 0 0 0 0 (-u(i)*X(i)) (-u(i)*Y(i)) (-u(i)*Z(i))]; 
A(i*2,:)=[0 0 0 0 X(i) Y(i) Z(i) 1 (-v(i)*X(i)) (-v(i)*Y(i)) (-v(i)*Z(i))]; 

Malheureusement je n'ai pas Matlab ici maintenant pour voir si vous pouvez combiner les en une seule ligne par l'indexation A(i*2-1:i*2,:) ou non.