switch case - choose from array

I'm trying to run a function which includes this part:
optionsVec = [1 5 12 14];
for k=1:10
switch k
case num2cell(optionsVec)
disp('k is an option')
otherwise
disp('k is not an option')
end
end
But the num2cell function is very time consuming.
How can I preform the same action - compare k to numbers within an array - more efficiently?
Thanks!

 采纳的回答

Do the conversion before the loop:
C = num2cell(optionsVec);
for ...
switch ...
case C
...
end
end

更多回答(1 个)

validIdx = ismember( 1:10, [1 5 12 14] );
for n = 1:numel( validIdx )
if validIdx(n)
disp( 'k is an option' )
else
disp( 'k is not an option' )
end
end
should achieve the same thing, printing one or other of those statements 10 times. There may be a neater way than the for loop to do the disp part too, but there is certainly no need for cell arrays.

类别

在 帮助中心 和 File Exchange 中查找有关 Logical 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by