Borrar filtros
Borrar filtros

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

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

Respuesta aceptada

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

Iniciar sesión para comentar.

Más respuestas (1)

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

Iniciar sesión para comentar.

Categorías

Más información sobre MATLAB 入門 en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!