sank 发表于 2007-5-25 10:16

请教高手

Output returned by S-function 'getfile' in 'sumwe/S-Function' during flag=3 call must be a real vector of length 1.这是什么问题?我想对于S_function中对于矩阵进行操作,提示这样的错误。

spare 发表于 2007-5-25 10:22

回复 #1 sank 的帖子

把程序传上来,这样说没有什么信息,呵呵

sank 发表于 2007-5-25 10:31

这是程序。

sank 发表于 2007-5-25 10:32

刚才没传上,不好意思。
function = getfile(t,x,u,flag)switch flag
case 0
=mdlInitializeSizes; case 3sys=mdlOutputs(t,x,u); case {1,2,4,9}
sys=[];


otherwise
error(['Unhandled flag = ',num2str(flag)]);
end function =mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates
= 0;sizes.NumDiscStates
= 0;sizes.NumOutputs
= 1;sizes.NumInputs
= 0;sizes.DirFeedthrough = 1;sizes.NumSampleTimes = 1;
% at least one sample time is needed
sys = simsizes(sizes); x0
= [];
str = []; ts
= [-1 0]; function sys=mdlOutputs(t,x,u)%a=1;%b=2;filename=('C:\Program Files\MATLAB\R2006b\work\simulink\102_7.tif');I=imread(filename);M=double(I);sys =M;
% end mdlOutputs

[ 本帖最后由 cdwxg 于 2007-5-25 10:34 编辑 ]

cdwxg 发表于 2007-5-25 10:39

sizes.NumInputs
= 0;

没有输入?
function sys=mdlOutputs(t,x,u)
%a=1;
%b=2;
filename=('C:\Program Files\MATLAB\R2006b\work\simulink\102_7.tif');
I=imread(filename);
M=double(I);
sys =M;

filename是个m文件吧?
Output must be a real vector of length 1,就是output这里的问题
请问你imread的文件是什么?

PS:以后程序类的不要上传附件,直接粘贴到帖子上发表就行,已经给你更改。

sank 发表于 2007-5-25 10:42

我想从当前目录下读出一幅图片的数据,filename是文件的路径。

cdwxg 发表于 2007-5-25 11:18

一个图片为I?M=double(I);
这个用法可以用么?

spare 发表于 2007-5-25 14:16

回复 #6 sank 的帖子

你读出的数据长度应该不是1吧,上次好像看到输出数据长度设置为-1的话长度是适时变化的,你这样试试呢?

sank 发表于 2007-5-25 18:23

对啊,输出长度不是1,但不知在哪设置输出长度,谢谢。

sank 发表于 2007-5-25 18:26

回复 #7 cdwxg 的帖子

这样可以的,只是从图片读出的是矩阵。谢谢你。
页: [1]
查看完整版本: 请教高手