better than if else conditions

3 vues (au cours des 30 derniers jours)
UNK
UNK le 28 Oct 2018
Modifié(e) : Bruno Luong le 28 Oct 2018
I would like to give a tag to a number based on in which region it lies. I am currently using an if else condition. Wondering if there is an easier way.
Note: the intervals are not equal.
Here is the code:
for i = 1:length(data_rot(:,1))
check = acos(data_rot(i,6));
if check >= 0 && check <.6435
tagsPhi(i,1) = 1;
elseif check >= .6435 && check <.9273
tagsPhi(i,1) = 2;
elseif check >= .9273 && check <1.1593
tagsPhi(i,1) = 3;
elseif check >= 1.1593 && check <1.3694
tagsPhi(i,1) = 4;
elseif check >= 1.3694 && check <1.5708
tagsPhi(i,1) = 5;
elseif check >= 1.5708 && check <1.7722
tagsPhi(i,1) = 6;
elseif check >= 1.7722 && check <1.9823
tagsPhi(i,1) = 7;
elseif check >= 1.9823 && check <2.2143
tagsPhi(i,1) = 8;
elseif check >= 2.2143 && check <2.4981
tagsPhi(i,1) = 9;
else
tagsPhi(i,1) = 10;
end
end

Réponse acceptée

Bruno Luong
Bruno Luong le 28 Oct 2018
Modifié(e) : Bruno Luong le 28 Oct 2018
...
edges= [0,.6435,.9273,1.1593,1.3694,1.570,1.7722,1.9823,2.2143,2.4981,Inf];
[~,~,tagsPhi] = histcounts(check,edges)

Plus de réponses (1)

John D'Errico
John D'Errico le 28 Oct 2018
Modifié(e) : John D'Errico le 28 Oct 2018
Look at the third output argument from the function histcounts. It does everything you need, in a fully vectorized form. Yes, I suppose it is not fully obvious you should have known to have looked there. Older releases of MATLAB would use histc.

Catégories

En savoir plus sur Debugging and Analysis dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by