声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2583|回复: 1

[线性振动] [求助] : 关于离散线性时不变系统的状态方程表达式

[复制链接]
发表于 2006-8-6 19:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
[求助]  为什么 离散线性时不变系统可以用如下的状态方程
来描述 ?
x (k + 1) = Ax (k ) + B u (k ) ,
y (k ) = Cx (k ),

但是在用matlab仿真时x (k + 1) 并不等于 Ax (k ) + B u (k ) ,请问各位大虾这如何解释?

具体程序为

freedegree=3;           %自由度
input_num=1;   
fs=100;                     %采样频率
interval=1/fs;            
N=20;                          %采样点数
f=fs*(0:N1-1)/N;
m1=1; m2=1; m3=1;
c1=40; c2=10; c3=1;
k1=10000; k2=10000; k3=10000;
a=[-(c1+c2)/m1, c2/m1,       0,      -(k1+k2)/m1, k2/m1,       0;                  
   c2/m2,       -(c2+c3)/m2, c3/m2,  k2/m2,       -(k2+k3)/m2, k3/m2;
   0,           c3/m3,       -c3/m3, 0,           k3/m3,       -k3/m3;
   1,           0,           0,      0,           0,           0;
   0,           1,           0,      0,           0,           0;
   0,           0,           1,      0,           0,           0];
c_v_s=[1,0,0,0,0,0;0,1,0,0,0,0;0,0,1,0,0,0;0,0,0,1,0,0;0,0,0,0,1,0;0,0,0,0,0,1];  
c_a_v=a;  
b=[1/m1;0;0;0;0;0]   ;                                                
d_v_s=[0;0;0;0;0;0];
d_a_v=b;
sys1=ss(a,b,c_v_s,d_v_s);
sys2=ss(a,b,c_a_v,d_a_v);
t=0: interval : ( N-1)*interval;
u(1,: )=[ones(1,N)];
y_v_s=lsim(sys1,u,t);             % 输出为速度,位移
y_a_v=lsim(sys2,u,t);            % 输出为加速度,速度


结果:
y_v_s =

         0         0         0         0         0         0
    0.0056    0.0015    0.0001    0.0000    0.0000    0.0000
    0.0029    0.0045    0.0016    0.0001    0.0000    0.0000
    0.0003    0.0037    0.0055    0.0001    0.0001    0.0000
    0.0005    0.0017    0.0075    0.0001    0.0001    0.0001
    0.0013    0.0032    0.0045    0.0001    0.0001    0.0002
    0.0024    0.0041    0.0003    0.0001    0.0002    0.0002
    0.0021    0.0006   -0.0008    0.0002    0.0002    0.0002
   -0.0008   -0.0027   -0.0006    0.0002    0.0002    0.0002
   -0.0032   -0.0028   -0.0020    0.0001    0.0002    0.0002
   -0.0022   -0.0025   -0.0042    0.0001    0.0001    0.0001
   -0.0004   -0.0030   -0.0049    0.0001    0.0001    0.0001
   -0.0007   -0.0028   -0.0038    0.0001    0.0001    0.0001
   -0.0017   -0.0018   -0.0018    0.0001    0.0000    0.0000
   -0.0011   -0.0007    0.0002    0.0001    0.0000    0.0000
    0.0004    0.0008    0.0014    0.0001    0.0000    0.0000
    0.0015    0.0024    0.0021    0.0001    0.0000    0.0000
    0.0018    0.0029    0.0030    0.0001    0.0001    0.0001
    0.0014    0.0025    0.0037    0.0001    0.0001    0.0001
    0.0009    0.0021    0.0033    0.0001    0.0001    0.0001
    (前三列为速度,后三列为位移)

可是用 x (k + 1) = Ax (k ) + B u (k ) 计算,比如取k=5;
计算
Ax (5) + B u (5)= a*y_v_s(5,: )'+b*u(5)=  [  0.0795   -0.0267   -0.0546    0.0005    0.0017    0.0075];
并不等于x(6)=y_v_s(6,: )=[0.0013    0.0032    0.0045    0.0001    0.0001    0.0002];

[ 本帖最后由 cew723 于 2006-8-7 08:42 编辑 ]
回复
分享到:

使用道具 举报

发表于 2006-8-6 19:27 | 显示全部楼层
把你仿真的程序拿来看一下,没有弄懂你的意思
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-6 09:36 , Processed in 0.067493 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表