我正在遵循飞行动力学的课程,我想在四个输入中的一个绘制一个步长输入( 0.01745)的响应。我有四个输入: u,w,q,theta
但是,我得到了一个错误:使用DynamicSystem/lsim (第98行)模拟对特定输入信号的响应时,输入数据U必须是一个矩阵,其行数与时间向量T中的样本数相同,列数必须与输入通道相同。
在我的工作空间里,我满足了这些要求.当我使用u=ones(大小(T))时,我的代码确实有效,但这给出了在所有4个通道u、w、q、θ上的步骤输入.你能帮帮我吗?谢谢:)
clear all; clc;
A=[ 0.00501 0.00464 -72.90 -31.34;
-0.08570 -0.545 309 -7.4;
0.00185 -0.00767 -0.395 0.00132;
0 0 1 0];
B=[5.63 -23.8 -4.51576 0]';
C=[1 0 0 0;
0 1 0 0;
0 0 1 0;
0 0 0 1];
D=0;
sys=ss(A,B,C,D);
t=0:0.1:1000;
%definieer initial conditions:
u0=0;
w0=0;
q0=0;
theta0=0;
x0=[u0 w0 q0 theta0]';
u1=zeros(size(t)); %u
u2=zeros(size(t)); %w
u3=zeros(size(t)); %q
u4=zeros(size(t))+0.01745; %theta0
u=[u1;u2;u3;u4]'; **% this line gives the error**
%u=zeros(size(t)); **%this works but gives step input at all 4 inputs...**
figure(1)
subplot(1,2,1)
lsim(sys,u,t,x0)
xlabel('time');
ylabel('theta (rad) q (rad/s) w (ft/s) u (ft/s)');
subplot(1,2,2)
pzmap(sys)
title('pole-zere map A-7A corsair II, ex 6.1');
damp(sys)%geeft eigenvalue,damping,freq
[U,D]=eig(A);
eigenvector=U;
disp('----------------------------------------')
disp('magnitude, welke mode is het sterkst voor (u,w,q,theta)')
disp(' |short-period mode | phugoid mode|')
EigenvecMagnitude=abs(U);
EigenvecMagnitude
disp('----------------------------------------')发布于 2015-11-18 17:51:09
ss的文档说明了矩阵与以下系统模型有关:
dx/dt = Ax(t) + Bu(t)
y(t) = Cx(t) + Du(t)特别是,B "--是Nx by Nu实矩阵或复值矩阵“,其中Nx是状态维(在你的例子中是4),Nu是控制维,根据B=[5.63 -23.8 -4.51576 0]';是1。
但是,当您尝试使用代码中显示的矩阵u=[u1;u2;u3;u4]';作为控件输入时,这将失败,因为它的维度不像预期的那样(4而不是1)。在您的代码中,控件输入的长度(对应于t)似乎是可以的。
总之,您至少需要修改B (请注意,我不是特定系统的专家--您自己最清楚这一点!)才能让这件事成功。也许你需要Bnew = diag(B)或者类似的东西?
发布于 2022-03-09 17:09:50
我们考虑的是MIMO2x2,我们希望通过第一个天线发射符号x1。
可以给符号x1分配两个发射功率,如x1发送槽信道、h11是p11。
和x1发送的槽信道h21是p21 ( p11和p21的值必须相同或不同)在这里输入图像描述
https://stackoverflow.com/questions/33785648
复制相似问题