# Length/Index based if else statements

5 visualizzazioni (ultimi 30 giorni)
Fawad Farooq Ashraf il 1 Mag 2022
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 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Risposta accettata

Voss il 1 Mag 2022
Modificato: Voss il 1 Mag 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 CommentiMostra 1 commento meno recenteNascondi 1 commento meno recente
Joe Jones il 27 Lug 2022
Dear
Have you solved this problem? I met the error recently.
compilation of model failed while trying to resolve underspecified signal dimensions
Fawad Farooq Ashraf il 30 Lug 2022
@Joe Jones I guess you have to use the "Ports and Data Manager" for that. In the editor window for MATLAB Function, click on "Edit Data" and then try to specify the type and size. That should work for you.

Accedi per commentare.

### Categorie

Scopri di più su Shifting and Sorting Matrices in Help Center e File Exchange

R2020a

### Community Treasure Hunt

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

Start Hunting!

Translated by