行列 n回代入したい

조회 수: 5 (최근 30일)
優斗 森山
優斗 森山 2020년 11월 8일
답변: Takao 2020년 11월 13일
不明点があり質問致します。
式  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
源樹 上林
源樹 上林 2020년 11월 9일
とりあえず言われたとおり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みたいに。

댓글을 달려면 로그인하십시오.

답변 (1개)

Takao
Takao 2020년 11월 13일
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()の内容によっては、行列計算を行ったほうがスマートなプログラムを書けるかもしれません。
ご検討ください。

카테고리

Help CenterFile Exchange에서 初等数学에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!