sudazb 发表于 2010-4-7 13:54

SIMULINK仿真时 出现一个错误

在simulink仿真时,运行S函数出现了这个error:“Output returned by S-function 'sanz' in block 'try6E/S-Function' during flag=3 call must be a real vector of length 12”,各位高手知道是什么原因吗?

yufeng 发表于 2010-4-7 17:30

输出维数不一致

sudazb 发表于 2010-4-7 17:59

回复 沙发 yufeng 的帖子

这个我也知道,就是不知道怎么解决,你有啥办法不?

sudazb 发表于 2010-4-8 13:58

回复 沙发 yufeng 的帖子

function = sixy(t,x,u,flag)

K=;

M=;

C=;

G=eye(6);

A=cat(1,cat(2,zeros(6,6),eye(6)),cat(2,-inv(M)*K,-inv(M)*C));

B=cat(1,zeros(6,6),-inv(M)*G);

C=eye(12);D=zeros(12,6);

switch flag,

case 0,

sizes = simsizes;

sizes.NumContStates = 12;

sizes.NumDiscStates = 0;

sizes.NumOutputs = 12;

sizes.NumInputs = 6;

sizes.DirFeedthrough = 1;

sizes.NumSampleTimes = 1;

sys = simsizes(sizes);

x0=;

str=[];

ts=;

case 1,

sys=A*x+B*u;

case 3,

sys=C*x+D*u;

case {2,4,9},

sys = [];

end

我的输入是一个6行1列的矩阵,输出是12行1列的矩阵,输出后面接了个DEMUX,也设置为12个输出了,我的设置没问题啊,程序里面的矩阵相乘的行列数也是对应正确的啊,到底是什么问题?

yufeng 发表于 2010-4-9 10:19

程序没有问题 看是否外部输入输出有问题

sudazb 发表于 2010-4-9 12:13

回复 5楼 yufeng 的帖子

外部输入是一个6行1列的矩阵,输出是12行1列的矩阵,而且我在输出后面接了个DEMUX,也设置为12个输出了,输入输出应该也没问题啊,真不知道怎么办了,呵呵
页: [1]
查看完整版本: SIMULINK仿真时 出现一个错误