MATLABの変数を動的に使いたい
19 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Hiroyuki Hishida
le 8 Déc 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 commentaires
Yoshio
le 8 Déc 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
Plus de réponses (1)
Hiroyuki Hishida
le 8 Déc 2019
Modifié(e) : Hiroyuki Hishida
le 8 Déc 2019
例えば、左辺を配列化してこういうのはどうでしょうか? MATLAB感の少ない書き方ではありますが、
var_tmp =初期化
for iter=1:1000
var_tmp(iter)=var_tmp(iter)+1;
end
よろしくお願いします
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!