是否有一种方法可以在MATLAB case
中运行多个switch
语句(比如说3个中的2个)?或者我是否必须使用一系列if
语句?我想做类似的事情:
test = {'test1','test2'}
switch test
case 'test1'
disp('test1')
case 'test2'
disp('test2')
case 'test3'
disp('test3')
end
输出:
test1
test2
旁注:有没有办法并行化这些代码,以便可以同时运行不同的案例?
答案 0 :(得分:2)
if
语句会更合适。
类似
if ismember('test1',test)
%code
end
如果你想让它平行,你可以通过以下方式完成:
test
是您的数据,case
是包含所有可能性的单元格
parfor(i=1:length(cases)){ %you need to parse the cases not the data
if(ismember(case{i},test)){
%code
}
}
答案 1 :(得分:2)
可以将switch
放入函数中,然后使用cellfun
。因此,定义函数:
function a = func(test)
switch test
case 'test1'
disp('test1')
case 'test2'
disp('test2')
case 'test3'
disp('test3')
end
end
然后,申请test
:
cellfun(@func, test)
结果将是:
test1
test2