MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Daniel on 10 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

*No products are associated with this question.*

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

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?

## 0 Comments