Set initial value in Matlab Function block

51 ビュー (過去 30 日間)
William
William 2014 年 4 月 17 日
回答済み: Danilo Teran 2018 年 12 月 4 日
How can I set the initial value for UP? UPI is my initial value input to the block. How can I make sure UP will accepts thhs value only once (start of the simulation)? Thanks
funciton UP=[UPI]
*UP=UPI;
%#close safety_relieve_valve
SRV=0;
if (UP>UL)
Val=0;
UP=RD;
else
Val=1;
UP=RU;
end
if (UP<LL) & (Val==0)
UP=RD+0.1;
disp(UP);
Val=1;
elseif (UP>=LL) & (Val==1)
UP=UP+0.1;
end*
  5 件のコメント
Azzi Abdelmalek
Azzi Abdelmalek 2014 年 4 月 17 日
have you tried Ports and Data Manager?
William
William 2014 年 4 月 17 日
The input is set as Inherit: same as Simulink. I kept getting error "Expecting scalr...." I changed the type to "double" but no avail.

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

回答 (2 件)

Azzi Abdelmalek
Azzi Abdelmalek 2014 年 4 月 17 日
編集済み: Azzi Abdelmalek 2014 年 4 月 17 日
You can use persistent declaration
function UP=fcn(UPI)
persistent UPI1
if isempty(UPI1)
UP=UPI
else
UP=UPI1
end
%your code
UPI1=UP;
  11 件のコメント
William
William 2014 年 4 月 17 日
Instead of using the 'elseif' statement, I created another 'if' statement & it worked. But there are some other issues I would like to resolve. I will post it later. Thanks again.
William
William 2014 年 5 月 19 日
編集済み: Azzi Abdelmalek 2014 年 5 月 19 日
function UP = UPC(t,LL,u1,u2,u3,u4,u5,u6,u7,u8)
%#codegen
persistent LLI
if isempty(LLI)
UP=LL;
else
UP=LLI;
end
My code
LLI=UP;
Azzi, I kept getting the error message "LLI is not defined..." when I attempted to run the simulation. "LL" is my IC for UP. Any idea? Thanks.

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


Danilo Teran
Danilo Teran 2018 年 12 月 4 日
Hi
I have a similar problem, could you find a real solution.
Best regards?

カテゴリ

Help Center および File ExchangeSimulink Functions についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by