# Infinite while loop in Matlab function block

7 ビュー (過去 30 日間)
Matthieu GATINE 2018 年 10 月 5 日

I have made this programm to implemente it in a Matlab function block in Simulink :
function Open_area1 = fcn(Moisture_Sensor_area_1_OUT,Moisture_instruction_min,Moisture_instruction_max)
Open_area1 = 0;
if (Moisture_Sensor_area_1_OUT<Moisture_instruction_min)
while(Moisture_Sensor_area_1_OUT<Moisture_instruction_max)
Open_area1 = 1;
end
end
end
But the while loop make an infinite simulation time.
##### 2 件のコメント表示非表示 1 件の古いコメント
Matthieu GATINE 2018 年 10 月 5 日

How can I update the value of Moisture_Sensor_area_1 when the function block is in the loop ? Does the simulation is stop during the execution of the function block ?
The input signal is a sampled sinus.

サインインしてコメントする。

### 採用された回答

Walter Roberson 2018 年 10 月 8 日
Output = double(Input >= Min & Input <= Max) ;
No loop. No if. But you do need to substitute appropriate variables.

サインインしてコメントする。

### その他の回答 (1 件)

TAB 2018 年 10 月 8 日
I guess, you are trying to run the loop for checking Moisture_Sensor_area_1_OUT<Moisture_instruction_min condition for every sample time.
But Simulink's Matlab Function runs in different way. It is invoked at every sample time during model execution.
At t=0, Get the 3 function inputs from previous blocks, Call fcn with inputs, collect fcn output and send to next block
At t=1, Get the 3 function inputs from previous blocks, Call fcn with inputs, collect fcn output and send to next block
At t=2, Get the 3 function inputs from previous blocks, Call fcn with inputs, collect fcn output and send to next block
...
... and so on.
Inputs to fcn remains same during the a sample time, so loop will always run into infinity.
You don't need to use while loop. You can just use if condition to set output.

サインインしてコメントする。

### カテゴリ

Find more on Simulink in Help Center and File Exchange

R2018a

### Community Treasure Hunt

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

Start Hunting!

Translated by