for文での繰り返し​回数の値を変数名とし​て用いたい

조회 수: 312 (최근 30일)
朋貴 熊田
朋貴 熊田 2022년 6월 8일
댓글: 朋貴 熊田 2022년 6월 10일
現在for文を用いて複数画像に処理を行おうと考えています。変数名与える際にfor文の繰り返し回数を変数名として使いたいです。具体的には
%繰り返し処理
for c=1:10
%何らかの処理を行う
data"c"=%処理結果%
end
上記のように、1回目の処理なら"data1"二回目なら”data2"~”data10"というように変数名に繰り返し回数を組み込みたいのですが、このような処理は可能でしょうか?
ご教授お願いします。

채택된 답변

Hernia Baby
Hernia Baby 2022년 6월 8일
편집: Hernia Baby 2022년 6월 8일
できますがオススメできない方法です。
eval関数を使うことになります。
for ii = 1:10
eval(sprintf('data%i = %i;',ii,ii))
end
who
Your variables are: cmdout data1 data10 data2 data3 data4 data5 data6 data7 data8 data9 ii
data2
data2 = 2
@Shunichi Kusanoさんの言う通りcell型が無難かなと思います
ひとつに格納できますしね
data = cell(10,1);
for ii = 1:10
data{ii} = 2*ii;
end
data{1:10}
ans = 2
ans = 4
ans = 6
ans = 8
ans = 10
ans = 12
ans = 14
ans = 16
ans = 18
ans = 20
  댓글 수: 2
Hernia Baby
Hernia Baby 2022년 6월 8일
追記するとcellfunを使えば要素ごとに一括処理できます
data = cell(10,1);
for ii = 1:10
data{ii} = ii;
end
data
data = 10×1 cell array
{[ 1]} {[ 2]} {[ 3]} {[ 4]} {[ 5]} {[ 6]} {[ 7]} {[ 8]} {[ 9]} {[10]}
2を各要素にかけてみます
data = cellfun(@(x) 2*x,data,'UniformOutput',false)
data = 10×1 cell array
{[ 2]} {[ 4]} {[ 6]} {[ 8]} {[10]} {[12]} {[14]} {[16]} {[18]} {[20]}
朋貴 熊田
朋貴 熊田 2022년 6월 10일
ご回答ありがとうございます。いろいろと試して見ようと思います。

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

추가 답변 (1개)

Shunichi Kusano
Shunichi Kusano 2022년 6월 8일
こうしたケースでは通常配列を使うのがおススメです。
例えばforループごとにセル配列にデータを突っ込んでいく方法です。
%繰り返し処理
data = cell(10,1);
for i=1:10
%何らかの処理を行う
data(i) = %処理結果%
end
後から
data(2)
などと番号を入れれば該当のデータを取り出すことができます。
  댓글 수: 1
朋貴 熊田
朋貴 熊田 2022년 6월 10일
ご回答ありがとうございます。通常配列も使用しようと思います。ありがとうございます。

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

카테고리

Help CenterFile Exchange에서 行列および配列에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!