MATLAB:在switch中运行多个case

时间:2017-11-04 10:06:55

标签: matlab

是否有一种方法可以在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

旁注:有没有办法并行化这些代码,以便可以同时运行不同的案例?

2 个答案:

答案 0 :(得分:2)

如果你想要测试多个案例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