在使用lsim
matlab 的命令时,我发现程序中的初始条件不会影响模拟的输出。
y = lsim(F,input,time,x0);
哪里F
是传递函数,以及x0
我用状态空间模型计算的初始条件。的值x0
不影响y
,我什至用不同的数字替换它,模拟的输出y
总是相同的。
我实际上是在尝试从实际测量的输出中获取 tf 的参数。所以这是代码的主要部分:
tsmpl = 1e-2;
Sizeof_y = length(y_real);
R = zeros(Sizeof_y,3);
R(1,:) = [y_real(1) input(1) 0];
for i=2:Sizeof_y
R(i,:)=[y_real(i-1) input(i) input(i-1)];
end
p = pinv(R)*y_real;
z = tf('z',tsmpl);
num = p(2)*z+p(3);
den = z-p(1);
F = num/den;
sys = ss(F);
x0 = (y_real(1) - (sys.d*sig(1)))*pinv(sys.c);
y = lsim(F,input,time,x0);
y_real
是测量的输出。它是复数的向量。
time
是表示过程持续时间的时间向量。(由测量给出)time = 6:0.01:24
input
表示测试信号,它是一个定义如下的向量:
Size_input = length(time);
Size_sine = length(halftime) ; %halftime is the duration of the exitation also known from the measurment
input = zeros(Size_input,1);
input(1:Size_sine) = complex(30);
向量y_real
、time
和input
具有相同的长度。
我会很感激任何想法:))