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

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

Réponse acceptée

Hernia Baby
Hernia Baby le 8 Juin 2022
Modifié(e) : Hernia Baby le 8 Juin 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 commentaires
Hernia Baby
Hernia Baby le 8 Juin 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]}
朋貴 熊田
朋貴 熊田 le 10 Juin 2022
ご回答ありがとうございます。いろいろと試して見ようと思います。

Connectez-vous pour commenter.

Plus de réponses (1)

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

Connectez-vous pour commenter.

Catégories

En savoir plus sur 行列および配列 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!