MATLABの変数を動的に使いたい
23 views (last 30 days)
Show older comments
MATLABを使用しているのですが、forループ内の左辺の変数を動的に変えたい場合、どのような手段があるでしょうか?
例として、シンプルなプログラムで説明します。
例) 例えば、変数(2次元配列)が10000個ある場合に、for文を使用して、左辺を動的に変える事で、全ての二次元配列の指定したセルに1を足していくようなプログラムは可能でしょうか?
変数(Workspace内)
a1 %10x2の配列とします
a2
:
:
a10000
プログラム
for i=1:10000
a1(1,1) = a1(1,1) + 1;%この配列a1をa2,a3...へとループ内で変更したい
end
0 Comments
Accepted Answer
Hiroyuki Hishida
on 8 Dec 2019
こんいうイメージでしょうか?
for i=1:size_i
for j=1:size_y
X(i,j)= X(i,j) +1;
end
end
MATLABの特性を活かすなら、これでも良いかと。
for i=1:size_i*size_j
X(i) = X(i) +1;
end
さらには例えXがn次元だとしても、その要素に1を加算するのであれば、
X+1;
で良いです。MATLABによる行列演算については、先程のリンクから飛べますので、是非ごらんください。
6 Comments
Yoshio
on 8 Dec 2019
変数としてcell配列を使っても良いなら、以下のような方法もあるかと思います。
clear
numArrays = 3;
A = cell(numArrays,1);
for n = 1:numArrays
A{n} = magic(n);
end
B = A;
for n = 1:numArrays
B{n}(1,1) = A{n}(1,1)+1;
end
A{:}
B{:}
ans =
1
ans =
1 3
4 2
ans =
8 1 6
3 5 7
4 9 2
ans =
2
ans =
2 3
4 2
ans =
9 1 6
3 5 7
4 9 2
More Answers (1)
Hiroyuki Hishida
on 8 Dec 2019
Edited: Hiroyuki Hishida
on 8 Dec 2019
例えば、左辺を配列化してこういうのはどうでしょうか? MATLAB感の少ない書き方ではありますが、
var_tmp =初期化
for iter=1:1000
var_tmp(iter)=var_tmp(iter)+1;
end
よろしくお願いします
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!