yuanyuanlx 发表于 2006-12-4 12:15

请教:Matlab Fcn的数据传递。谢谢

您好:
如果您有建议就请回复帖子吧,谢谢。
比如说我有两个列向量已经在workspace中,分别为A= ',B= '。我想每次从这两个向量分别读取一个数,组成新的向量给Matlab Fcn模块传值,也就是第一次,在A中取 1 ,在B中取4 ,组成,再传给Matlab Fcn;第二次,在A中取 2 ,在B中取5 ,组成,再传给Matlab Fcn;等等。
我现在的做法是用两个From Workspace读取A和B中的数据,用Mux将它们混成一路信号,再输入到Matlab Fcn中,但错误提示Simulink model duru2(duru2是Matlab Fcn调用的M文件) was called with too few arguments。我在duru2中的第一行写的是:function y = duru2( a,b ),这里没问题吧?
没明白这个错误是什么意思,或者用别的方法给Matlab Fcn传递数据呢?

麻烦赐教,拜托了。

wf1254 发表于 2006-12-4 21:52

可能:
将函数声明改为function y = duru2( a),a是长度为2的向量
或者
不改变函数声明,在Matlab Fcn模块的参数设置中,即matlab function:下的框中输入为duru2(u(1),u(2))。如果没猜错的话你现在应该只输入了文件名duru2吧

yuanyuanlx 发表于 2006-12-4 22:32

您好,谢谢。
我试了您建议的方法,但是不管哪一种方法,都是同样的错误提示:Simulink model duru2 was called with too few arguments,比如就完成两个数的相加,我在函数声明里输入了duru2,M函数是这样的:
function y = duru2( x)
%DURU2 Summary of this function goes here
%Detailed explanation goes here
y=x(1)+x(2);

另一种方法也不行,这是为什么呢?

yuanyuanlx 发表于 2006-12-5 16:56

问题解决了,可是不知道是什么原因,是看了别人的例子总结出来的。我把Matlab Fcn模块函数声明里的duru2改写为duru2file,M文件:
function y = duru2file( x)
%DURU2 Summary of this function goes here
%Detailed explanation goes here
y=x(1)+x(2);
加上file这样就输出结果了,呵呵,解决了也不太明白。
还有个问题,我的仿真系统是个反馈系统,就是每次要把A、B中的各一个数和反馈回来的数组成新的向量给Matlab Fcn,而且好像不能用From Workspace这个模块读取数据了,因为它会对没有定义的时间点进行线形差值,而我要的只是A、B中的数据。我想出两个办法:
(1)用From File模块,把A、B保存两个mat文件,每次分别读取其中的一个数据,用Mux和反馈回来的数组成新的向量给Matlab Fcn,但是我不会每次只读一个数,From File好像是一次全部读入的。
(2)只把反馈回来的数据作为输入,然后另外的现场已经采集好的数据在Matlab Fcn模块用load一次全部读进来,每次只读一行,再和反馈
数据组成新的向量参与M函数中的计算,想用循环方式,可是没弄出来。

我就想到这两个办法,请赐教,谢谢。
页: [1]
查看完整版本: 请教:Matlab Fcn的数据传递。谢谢