I am getting an error using lsim for discrete time system?

15 vues (au cours des 30 derniers jours)
Girish Suri
Girish Suri le 18 Nov 2013
Commenté : Azzi Abdelmalek le 18 Nov 2013
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.

Réponses (1)

Azzi Abdelmalek
Azzi Abdelmalek le 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 commentaires
Girish Suri
Girish Suri le 18 Nov 2013
Earlier in my U definition, I just included u and w and not v. I figured out that v should also be the part of my inputs. Now, I have modified the system matrices.
System description :
States : X(k+1) = a.X(k+1) + b.(10 + w(k)); a = [2X2]; b = [2X1]; w is process noise
Output : y(k) = c.X(k) + v(k); c = [1X2]; v is measurement noise
I have modified a modified B and D matrix for the system that includes u,w,v.
A = [-0.08 -1;0.7 0.1];
B = [0.34 0.34 0;0.3 0.3 0]; [2X3]
D = [0 0 1]; [1X3]
U = [u' w v]' [3X1]
sys1 = ss(A,B,C,D,1)
N = 500;
u = 10*ones(1,N);
Ts = 1;
t = (0:Ts:N-1)';
x0 = [2 2]';
U = [u' w v]';
[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);
Is this the correct way to define the system and perform simulations?
Azzi Abdelmalek
Azzi Abdelmalek le 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);

Connectez-vous pour commenter.

Catégories

En savoir plus sur Plot Customization dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by