MATLAB Answers

0

Set initial value in Matlab Function block

Asked by William on 17 Apr 2014
Latest activity Answered by Danilo Teran on 4 Dec 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 Comments

I am required to enter input interactively so I used the "From Workspace" block. This block can only input with vector instead of scalar value. I would like to extract a single element from this vector then.
have you tried Ports and Data Manager?
The input is set as Inherit: same as Simulink. I kept getting error "Expecting scalr...." I changed the type to "double" but no avail.

Sign in to comment.

2 Answers

Answer by Azzi Abdelmalek
on 17 Apr 2014
Edited by Azzi Abdelmalek
on 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 Comments

I meant sampling time in the property box of constant block.
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.
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.

Sign in to comment.


Answer by Danilo Teran on 4 Dec 2018

Hi
I have a similar problem, could you find a real solution.
Best regards?

  0 Comments

Sign in to comment.