我想创建一个循环,它将遍历几个字符串,但无法在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