我想創建一個循環,它將遍歷幾個字符串,但無法在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}」 - 從單元格中提取char數組,而不是正常的括號 - test(1) - - 它只選擇數組中的第一個單元格,在此無效。再次檢查Oli的示例代碼;注意他在'i {1}'中使用花括號。 (另外,如果可以避免使用全局變量,請不要使用全局變量。) – 2012-03-22 17:26:12
您應該使用'SHADE_METHODE =陰影{1};'而不是'SHADE_METHODE =陰影(1);' – Oli 2012-03-22 18:32:52
可能的重複[是否有MATLAB的foreach?如果是這樣,如果基礎數據發生變化,它的行爲如何?](http://stackoverflow.com/questions/408080/is-there-a-foreach-in-matlab-if-so-how-does-it-behave -if-the-underlying-data-c) – 2013-08-02 20:12:42