If else if loop
    3 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
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.
0 Commenti
Risposte (1)
  madhan ravi
      
      
 il 16 Giu 2020
        function Spring_Force = fcn(displacement)
Spring_Force =  (0 <= displacement <= 15) .* 10*displacement + ...
                (16 <= displacement <= 100) + 18*displacement + ...
                (displacement > 100) + 1 * displacement;
end
Vedere anche
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

