MATLABの変数を動的に使いたい

조회 수: 25 (최근 30일)
Aki
Aki 2019년 12월 7일
댓글: Aki 2019년 12월 10일
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

채택된 답변

Hiroyuki Hishida
Hiroyuki Hishida 2019년 12월 8일
こんいうイメージでしょうか?
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
Yoshio
Yoshio 2019년 12월 8일
変数として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
Aki
Aki 2019년 12월 10일
このような方法もあるのですね
シンプルで良い方法ですね ありがとうございます

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

추가 답변 (1개)

Hiroyuki Hishida
Hiroyuki Hishida 2019년 12월 8일
편집: Hiroyuki Hishida 2019년 12월 8일
例えば、左辺を配列化してこういうのはどうでしょうか? MATLAB感の少ない書き方ではありますが、
var_tmp =初期化
for iter=1:1000
var_tmp(iter)=var_tmp(iter)+1;
end
MATLAB感を出すなら、for文なくして、そのまま+1で良いと思います。 MATALB環境の行列
よろしくお願いします
  댓글 수: 1
Aki
Aki 2019년 12월 8일
素早い回答ありがとうございます.
扱いたい対象は2次元配列であったので,質問内容を編集しました.
複数の二次元行列を左辺に使用したい場合は,どのような手段があるでしょうか?
ご回答よろしくお願いします.

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

카테고리

Help CenterFile Exchange에서 関数の基礎에 대해 자세히 알아보기

제품


릴리스

R2017b

Community Treasure Hunt

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

Start Hunting!