A compact “if” statement using “or” operator
3 次查看(过去 30 天)
显示 更早的评论
A more compact way to write the “if” statement using “or” operator, than this one?
if i == 1 || i == 2 || i == 7 || i == 8 || i == 10
% ...
end
Something similar to this statement?
if i == [1 2 7 8 10]
% ...
end
0 个评论
采纳的回答
Dyuman Joshi
2023-6-1
编辑:Dyuman Joshi
2023-6-1
Yes there is - ismember
vec = [1 2 7 8 10];
i = 4;
%Checks if elements in i are present in vec or not
ismember(i,vec)
if ismember(i,vec)
disp('if')
else
disp('else')
end
7 个评论
Dyuman Joshi
2023-6-1
编辑:Dyuman Joshi
2023-6-1
It is interesting to note that anyEq() is the fastest for first element and the slowest for the last element, and there timings of any() and ismember() are similar.
Edit - In the Overview section of the FileEx submission, Jan mentions - "Best case (first element matches): 99.99% faster for 1e6 elements (Matlab 2011b/64, MSVC 2008)"
%From the above tests done by James Tursa
n_any = 4.766502e-04;
n_is = 8.393297e-04;
n_eq = 4.046598e-06;
1-n_eq/n_any
1-n_eq/n_is
And it still holds.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!