Length/Index based if else statements
    10 views (last 30 days)
  
       Show older comments
    
I have a vector of variable length, for example
b = [0.25;0.5;0.75;1;1.5;1.75;2.0];
and based on the length of this vector, I have some specific parameter K against each element of b, x is the input and my final output is m
if x < b(1)
    m = K(1);
elseif x < b(2)
    m = K(2);
elseif x < b(3)
    m = K(3);
elseif x < b(4)
    m = K(4);
elseif x < b(5)
    m = K(5);
elseif x < b(6)
    m = K(6);
else
    m = K(7);
end
I want to generalize my code based on the length of b. Here, the length was 7 so I had to run it manually like this for 7 elements. How can I generalize this for any length of b?
0 Comments
Accepted Answer
  Voss
      
      
 on 1 May 2022
        
      Edited: Voss
      
      
 on 1 May 2022
  
      idx = find(x < b,1);
if isempty(idx)
    idx = numel(b);
end
m = K(idx);
The above assumes b is sorted in ascending order, as in the example. If b is not necessarily sorted, you'd have to sort it first.
3 Comments
  Joe Jones
 on 27 Jul 2022
				Dear 
Have you solved this problem? I met the error recently.
compilation of model failed while trying to resolve underspecified signal dimensions
More Answers (0)
See Also
Categories
				Find more on Numeric Types 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!

