How to split signal in simulink?

Hello, I have this easy model. In matlab function block I have command ulength=length(u); and it returns me 1. It should give me 30, because in red box is set time to 30. My question is if I can split somehow the signal, because I need to use in matlab function block for loop: For example:
for k=1:30
z= [-y(k-1) u(k-1)]';
end
But it shows me error: that signal 'u' and 'y' are one dimensional with one element. So is there way how to split that signal so I could work with it like in matlab workspace?

2 Comments

What are you going to do by splitting them? Explain that and maybe we'll come up with an easier way.
I have to identify data using recursive least square method which should give me 4 parameters (b0,a2,a1,a0).
b0
--------------
a2*s^2+a1*s+a0
My code which I have in matlab works fine but in simulink it doesn't work because of the loop. It won't let me access y(n-l) how it shown below because it says it's one dimensional with 1 element so dunno how to change the code that it would work in simulink.
for n=3:N
for l=1:1
V(l) = y(n-l); %output
end
for i=1:3
W(i) = u(n-i+1); %input
end
z = [V';W'];
sample_out = y(n);
C = (C - ( (C*z*z'*C)/( lamda+(z'*C*z) ) ))/lamda;
P = P + (C*z* (sample_out - (z'*P) ) );
end

Sign in to comment.

 Accepted Answer

Jim Riggs
Jim Riggs on 20 Mar 2018
Edited: Jim Riggs on 20 Mar 2018
I'm not sure if this is the answer to your question, but Here is how to access a signal from the previous calculation iteration, y(n-1), in Simulink:

2 Comments

Thank you for help, I actually found that I can use also unit delay block instead of memory block.
Jim Riggs
Jim Riggs on 21 Mar 2018
Edited: Jim Riggs on 21 Mar 2018
Very good.
The memory block may be set to any delay you desire.
n-1, n-2, n-3, .... etc.
you specify the delay inside the block. Default is 1.

Sign in to comment.

More Answers (0)

Asked:

on 20 Mar 2018

Edited:

on 21 Mar 2018

Community Treasure Hunt

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

Start Hunting!