我想创建一个循环,用于迭代多个字符串,但在Matlab中无法实现。
有效的方式是:
Matlab 中是否有这样的选项?
添加:
我需要将单词作为字符串稍后使用,而不仅仅是显示(
有效的方式是:
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 中是否有这样的选项?
添加:
我需要将单词作为字符串稍后使用,而不仅仅是显示(
disp
只是一个示例)。我已经尝试在我的真实程序中使用 cell 数组: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
这不起作用,因为值仍然保持为单元格而不是字符串,我收到以下错误消息:
??? Error using ==> fprintf 对于“cell”输入未定义函数。
*- 我实际上并不需要 fprintf
,我只是用它来检查值是否正确。
**- ray_tracing
是我的代码,它使用这些字符串的值。
test{1}
- 从单元格中提取字符数组,而不是普通的括号 -test(1)
- 括号只是选择数组中的第一个单元格,在这里没有实际作用。再次检查Oli的示例代码;请注意,他在i {1}
中使用了花括号。(此外,如果可以避免,请勿使用全局变量。) - Andrew JankeSHADE_METHODE=shade{1};
而不是SHADE_METHODE=shade(1);
。 - Oli