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

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

Akzeptierte Antwort

Hernia Baby
Hernia Baby am 8 Jun. 2022
Bearbeitet: Hernia Baby am 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 Kommentare
Hernia Baby
Hernia Baby am 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]}
朋貴 熊田
朋貴 熊田 am 10 Jun. 2022
ご回答ありがとうございます。いろいろと試して見ようと思います。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu 行列および配列 finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!