# If else if loop

조회 수: 2 (최근 30일)
Nimish Iwale 2020년 6월 16일
댓글: Nimish Iwale 2020년 6월 16일
Hello all, I am trying to make a MATLAB function block in Simulink where in I need a specific spring force (Spring rate x Displacement) for a specific displacement signal. Following is the Simulink figure and the corresponding code in the block.
function Spring_Force = fcn(displacement)
if (0 <= displacement <= 15) % Stroke
Spring_Force = 10*displacement;
elseif (16 <= displacement <= 100) % Stroke
Spring_Force = 18*displacement;
else
Spring_Force = 14*displacement;
end
__________________________________________________________________________________________________________________________
The problem: The output is always the first statement i.e. - Spring_Force = 10*displacement; even if the displacement signal varies above 15 as specified. It does not consider the elseif and else statements at all. There is no error shown. If I re-write the first statement as Spring_Force = 0*displacement, the output is 0 for that input signal. Can anyone please help on this?
Thank you very much.

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

### 답변 (1개)

madhan ravi 2020년 6월 16일
function Spring_Force = fcn(displacement)
Spring_Force = (0 <= displacement <= 15) .* 10*displacement + ...
(16 <= displacement <= 100) + 18*displacement + ...
(displacement > 100) + 1 * displacement;
end
##### 댓글 수: 1이전 댓글 -1개 표시이전 댓글 -1개 숨기기
Nimish Iwale 2020년 6월 16일
Thank you very much.
Can you please tell me why have you used - '.*' for the 1st condition and '+' for the rest two?

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

### 카테고리

Help CenterFile Exchange에서 General Applications에 대해 자세히 알아보기

### Community Treasure Hunt

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

Start Hunting!

Translated by