私はいくつかの文字列を繰り返しますが、Matlabではそうすることができないループを作成したいと思います。Matlabの文字列をforeachループ
for i=1:3
if (i==1)
b='cow';
elseif (i==2)
b='dog';
else
b='cat';
end
disp(b);
end
と結果は次のとおりです:
何働くことはある
cow
dog
cat
しかし、私がしたいことのようになります。よりエレガントなものです:
for i=['cow','dog','cat']
disp (i);
end
と与えます同じ結果。
これを行うにはMatlabにオプションがありますか?
はADDITION:
私が使用するだけでなく(disp
は一例としてだった)を表示するために、後に文字列としての言葉を必要としています。値がセルとして滞在し、私は、エラーメッセージを取得文字列ではないよう
clear all;
close all;
clc;
global fp_a
global TEST_TYPE
global SHADE_METHODE
for fp_a=11:24
for shade={'full','fast'}
SHADE_METHODE=shade(1);
for test={'bunny','city'}
TEST_MODE=test(1);
fprintf ('fp_a:%d | test: %s | shade: %s',fp_a,TEST_TYPE,SHADE_METHODE);
ray_tracing;
end
end
end
それは動作しません:私は私の本当のプログラムにセル配列を使用しようとした
を??? ==> fprintfを使用しているエラー 'セル'入力に対して関数が定義されていません。
* - 私は本当に値が正しいことを確認するために使用しています。fprintf
** - ray_tracing
は、文字列
追加の問題は単なる構文です。通常の括弧ではなく、セルから文字配列を抽出するには、中括弧 'test {1}'を使う必要があります。 'test(1)'は配列の最初のセルを選択するだけです。 Oliのサンプルコードをもう一度チェックしてください。彼は '{1}'の中括弧を使っていることに注意してください。 (また、回避できれば、グローバルを使用しないでください。) –
あなたは 'SHADE_METHODE = shade(1);の代わりに' SHADE_METHODE = shade {1};を使うべきです – Oli
[MATLABにforeachはありますか?もしそうなら、基になるデータが変更された場合、どのように動作しますか?](http://stackoverflow.com/questions/408080/is-there-a-foreach-in-matlab-if-so-how-does-it-behave -if-the-underlying-data-c) –