Filter löschen
Filter löschen

行列 n回代入したい

30 Ansichten (letzte 30 Tage)
優斗 森山
優斗 森山 am 8 Nov. 2020
Beantwortet: Takao am 13 Nov. 2020
不明点があり質問致します。
式  Ez(n+1) (i,j) = Ez(n) (i,j)  のように行列をn回代入したい場合、
どのようなプログラムを作成すればよいでしょうか。
下記のプログラムだとnの変化に意味があらず
どのようにすればよいか、ご指導いただければと思います。
よろしくお願い致します。
nsteps = 10;
Ez = zeros(10,10)
for n = 1:nsteps
for i = 1:10
for j = 1:10
Ez(i,j) = Ez(i,j); %この部分でn回代入できるようにしたいです。
end
end
end
  1 Kommentar
源樹 上林
源樹 上林 am 9 Nov. 2020
とりあえず言われたとおりn回代入してみましたが、こう言うことではないですよね。ただの確認です。
for i = 1:10
for j = 1:10
for n = 1:nsteps
Ez(i,j) = Ez(i,j);
end
end
end
> Ez(n+1) (i,j) = Ez(n) (i,j)
matlabでこういう表記はできなかったと思います。セル配列なら似たような書き方ができますが、これでしょうか?
Ez{n+1}(i,j) = Ez{n}(i,j)
そもそもどんな出力をイメージされているのか、私の能力ではこの質問内容から読み取ることができませんでした。せめて入力値とそれに対する期待している出力値の例があるとわかりやすいのですが。Codyみたいに。

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Takao
Takao am 13 Nov. 2020
Ezの引数i,jに加えて、nを用いる必要があると思います。
つまり、こういうことです。
for n = 1:nsteps
for i = 1:10
for j = 1:10
Ez(i,j,n+1) = Ez(i,j,n);
end
end
end
変数Ez()は本来であれば2次元の行列なのですが、Matlabの制約上、3次元行列を利用する必要があると思います。
なお、ご存知かも知れませんが、matlabは繰り返し計算が苦手です。
変数Ez()の内容によっては、行列計算を行ったほうがスマートなプログラムを書けるかもしれません。
ご検討ください。

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!