Set initial value in Matlab Function block

42 visualizzazioni (ultimi 30 giorni)
William
William il 17 Apr 2014
Risposto: Danilo Teran il 4 Dic 2018
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 Commenti
Azzi Abdelmalek
Azzi Abdelmalek il 17 Apr 2014
have you tried Ports and Data Manager?
William
William il 17 Apr 2014
The input is set as Inherit: same as Simulink. I kept getting error "Expecting scalr...." I changed the type to "double" but no avail.

Accedi per commentare.

Risposte (2)

Azzi Abdelmalek
Azzi Abdelmalek il 17 Apr 2014
Modificato: Azzi Abdelmalek il 17 Apr 2014
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 Commenti
William
William il 17 Apr 2014
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 il 19 Mag 2014
Modificato: Azzi Abdelmalek il 19 Mag 2014
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.

Accedi per commentare.


Danilo Teran
Danilo Teran il 4 Dic 2018
Hi
I have a similar problem, could you find a real solution.
Best regards?

Categorie

Scopri di più su Simulink Functions in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by