在使用matlab的lsim
命令时,我发现程序中的初始条件并不会影响模拟的输出。
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
具有相同的长度。
我会感激任何想法:))