better than if else conditions
    3 views (last 30 days)
  
       Show older comments
    
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
0 Comments
Accepted Answer
  Bruno Luong
      
      
 on 28 Oct 2018
        
      Edited: Bruno Luong
      
      
 on 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)
0 Comments
More Answers (1)
  John D'Errico
      
      
 on 28 Oct 2018
        
      Edited: John D'Errico
      
      
 on 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.
0 Comments
See Also
Categories
				Find more on Debugging and Analysis in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

