I am getting an error using lsim for discrete time system?
5 views (last 30 days)
Show older comments
Error :
Error using DynamicSystem/lsim (line 85) When simulating the response to a specific input signal, the input data U must be a matrix with as many rows as samples in the time vector T, and as many columns as input channels.
Error in hw4 (line 26)
[x,k] = lsim(sys1,U,x0);
Here is my code :
clc
clear all
close all
%%Q2 a
w = sqrt(1)*randn(500,1);
v = sqrt(0.5)*randn(500,1);
wmean = mean(w);
wcov = cov(w');
vmean = mean(v);
vcov = cov(v');
a = [-0.08 -1;0.7 0.1];
b = [0.34; 0.3];
bw = b;
c = [0 3];
d = 0;
sys1 = ss(a,b,c,d,1)
N = 500;
u = 10*ones(1,N);
k = (0:1:N-1)';
x0 = [2 2]';
U = u' + w;
[x,k] = lsim(sys1,U,x0);
I don't know where I am getting wrong?
System description :
X(k+1) = a.X(k+1) + b.(10 + w(k));
a = [2X2];
b = [2X1];
w is process noise
y(k) = c.X(k) + v(k); c = [1X2]; v is measurement noise.
Want to simulate the system with w,v and u.
0 Comments
Answers (1)
Azzi Abdelmalek
on 18 Nov 2013
You did not specify the time vector while using lsim function
Ts=1% your sample time
t=0:Ts:(numel(U)-1)*Ts; % vector time with same size as U
[x,k] = lsim(sys1,U,t,x0);
stem(k,x)
2 Comments
Azzi Abdelmalek
on 18 Nov 2013
It seems correct, don't forget to define your noise signals v and w
A = [-0.08 -1;0.7 0.1];
B = [0.34 0.34 0;0.3 0.3 0];
C=[0 3 ]
D = [0 0 1];
sys1 = ss(A,B,C,D,1)
N = 500;
u = 10*ones(N,1);
v=rand(N,1);
w=rand(N,1);
U = [u w v]
t = (0:N-1)';
x0 = [2;2];
[y,t,x] = lsim(sys1,U,t,x0);
figure(1);
stem(y,t);
figure(2);
stem(x(:,1),t);
hold on;
stem(x(:,2),t);
See Also
Categories
Find more on Plot Customization in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!