web-dev-qa-db-ja.com

Matlab-行を行列に繰り返し挿入/追加

どのようにMATLABで行を持つ行列をインタラクティブに追加できますか?

たとえば、空のマトリックスがあるとしましょう:

m = [];

forループを実行すると、行列に挿入する必要のある行が取得されます。

例えば:

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

挿入後は次のようになります。

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

ほとんどのプログラミング言語では、行を配列/行列に追加するだけです。しかし、私はそれをMATLABで行うのは難しいと思います。

8
Andrius

ループ内の_m = [m ; new_row];_。行の総数がすでにわかっている場合は、m=zeros(row_num,column_num);を定義してから、ループでm(i,:) = new_row;

17
lennon310

使うだけ

m = [m; row];

行列の拡張はメモリの再割り当てを伴うため、遅いことを考慮してください。行列をフルサイズに事前に割り当てることをお勧めします。

m = NaN(numRows,numCols);

次に、各反復で行の値を入力します。

m(ii,:) = row;

また、変数名として 使用しないことiの方が優れています。これは、デフォルトで虚数単位を表すためです(そのため、ここでは反復インデックスとしてiiを使用しています)。

2
Luis Mendo

値を作成してマトリックスに追加するには、これを行うことができ、あなたのような完全なマトリックスを作成できます。ここでは行= 5であり、次に列=であり、したがって2つのforループがあります。

M(i, j)の場所に値を入力すると、マトリックスに値が挿入されます

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)

おそらく同じ値を入力すると、出力はあなたのようになります。

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