web-dev-qa-db-fra.com

Matlab - insérer/ajouter des lignes dans la matrice de manière itérative

Comment dans matlab je peux interactivement ajouter une matrice avec des lignes?

Par exemple, disons que j'ai une matrice vide:

m = [];

et lorsque je lance la boucle for, je reçois des lignes que je dois insérer dans la matrice.

Par exemple:

for i=1:5
  row = v - x; % for example getting 1 2 3
  % m.append(row)?
end

ainsi, après l'insertion, il devrait ressembler à quelque chose comme:

m = [
     1 2 3
     3 2 1
     1 2 3
     4 3 2
     1 1 1
]

Dans la plupart des langages de programmation, vous pouvez simplement ajouter des lignes dans un tableau/une matrice. Mais j'ai du mal à le faire avec Matlab.

8
Andrius

m = [m ; new_row]; dans votre boucle. Si vous connaissez déjà le nombre total de lignes, définissez m=zeros(row_num,column_num);, puis dans votre boucle m(i,:) = new_row;

17
lennon310

Juste utiliser

m = [m; row];

Tenez compte du fait que l’extension d’une matrice est lente, car elle implique une réallocation de la mémoire. Il est préférable de préallouer la matrice à sa taille complète,

m = NaN(numRows,numCols);

puis remplissez les valeurs de ligne à chaque itération:

m(ii,:) = row;

Aussi, il est préférable de ne pas utiliseri comme nom de variable, car par défaut, il représente l'unité imaginaire (c'est pourquoi j'utilise ii ici comme index d'itération).

2
Luis Mendo

Pour créer et ajouter une valeur à la matrice, vous pouvez le faire et créer une matrice complète comme la vôtre. Ici rangée = 5 et ensuite colonne = 3 et donc deux pour la boucle.

Mettez la valeur dans M(i, j) location et la valeur sera insérée dans la matrice

for i=1:5
    for j=1:3
        M(i, j) = input('Enter a value = ')
    end
    fprintf('Row %d inserted successfully\n', i)
end

disp('Full Matrix is = ')
disp(M)

Si vous entrez les mêmes valeurs, le résultat sera comme le vôtre,

Full Matrix is = 
1 2 3
3 2 1
1 2 3
4 3 2
1 1 1
0
Maniruzzaman Akash