Length/Index based if else statements

조회 수: 5 (최근 30일)
Fawad Farooq Ashraf
Fawad Farooq Ashraf 2022년 5월 1일
댓글: Fawad Farooq Ashraf 2022년 7월 30일
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?

채택된 답변

Voss
Voss 2022년 5월 1일
편집: Voss 2022년 5월 1일
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
Joe Jones
Joe Jones 2022년 7월 27일
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
Fawad Farooq Ashraf 2022년 7월 30일
@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.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기

태그

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by