MATLAB Answers

Daniel

How to iterate in simulink?

Asked by Daniel
on 10 Nov 2013
Latest activity Commented on by Daniel
on 11 Nov 2013

Hi,

I have the following problem, I want to iterate two variables in Simulink. In normal code it would look like this:

X(i+1)=X(i)+4*(X(i)-Y(i));
Y(i+1)=Y(i)+2*(X(i)-Y(i));

I used For Iterate Block but it doesn't work. I'm getting an error:

"Trouble solving algebraic loop containing 'untitled/For Iterator Subsystem1' at time 0. Stopping simulation. There may be a singularity in the solution. If the model is correct, try reducing the step size (either by reducing the fixed step size or by tightening the error tolerances)."

Here's what i have done in Simulink

  0 Comments

Products

No products are associated with this question.

1 Answer

Answer by Azzi Abdelmalek
on 10 Nov 2013
Edited by Azzi Abdelmalek
on 10 Nov 2013
 Accepted answer
% x(i+1)=x(i)+4*(x(i)-y(i));
% can be written as
% x(i+1)-5x(i)=-4y(i)
% z X(z)-5X(z)=-4Y(z)
% H(z)=-4/(z-5)
To get the result you can use a discrete transfer function with 
numerator=-4
denominator=[1 -5]
% input signal=y
% output signal x

  3 Comments

Daniel
on 10 Nov 2013

Thanks, that helped me. I have one more question, how do I include initial conditions x(1)=400 and y(1)=100?

Azzi Abdelmalek
on 11 Nov 2013

set initial values of your unit delay block to 400 and 100

Daniel
on 11 Nov 2013

thanks one more time, that is what i was looking for.


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today