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

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

Accepted Answer

Hernia Baby
Hernia Baby on 8 Jun 2022
Edited: Hernia Baby on 8 Jun 2022
できますがオススメできない方法です。
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 Comments
Hernia Baby
Hernia Baby on 8 Jun 2022
追記すると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]}
朋貴 熊田
朋貴 熊田 on 10 Jun 2022
ご回答ありがとうございます。いろいろと試して見ようと思います。

Sign in to comment.

More Answers (1)

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

Sign in to comment.

Categories

Find more on 行列および配列 in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!