chuxue 发表于 2007-6-28 11:14

输出变量太多的问题导致程序出错

就是一个求误差的程序,本来应该很简单,可是不知道为什么出现如下错误:
??? Error using ==> error
Too many output arguments.
我定义的er应该是一个数呀,怎么会有太多的输出变量????
不知道是不是那个循环出问题了
请哪位高手解决一下了,谢谢了
程序如下:
function er=error(x,y)
%compute error
%input:
%x orignal signal
%y restored signal
%output:
%er error
e=x-y;
el=0;
xl=0;
for m=1:size(x,1)
    for n=1:size(x,2)
      el=el+e(m,n)^2;
      xl=xl+x(m,n)^2;
    end
end
er=sqrt(el)/sqrt(xl);

[ 本帖最后由 eight 于 2007-6-28 11:45 编辑 ]

rocwoods 发表于 2007-6-28 11:23

error是MATLAB本身自带的函数
请重新命名你编写的函数。

lxq 发表于 2007-6-28 11:26

帮运行了下,没有错误呀
你的x,y 是否长度一致?

chuxue 发表于 2007-6-28 11:30

这样呀
哎,还是对matlab了解太少
改了改,ok了
谢谢rocwoods了

chuxue 发表于 2007-6-28 11:33

是一致呀
lxq不改函数名也能运行?
我这不行
怪!

eight 发表于 2007-6-28 11:46

原帖由 chuxue 于 2007-6-28 11:14 发表 http://www.chinavib.com/forum/images/common/back.gif
就是一个求误差的程序,本来应该很简单,可是不知道为什么出现如下错误:
??? Error using ==> error
Too many output arguments.
我定义的er应该是一个数呀,怎么会有太多的输出变量????
不知道是不是 ...

初学的话,建议多看看各置顶贴以及里面提到的帖子

chuxue 发表于 2007-6-28 12:03

这个问题是输出变量太多造成的吗?
应该是2楼说的函数名出问题了,运行时把error看成是自带的函数了,所以出现Too many output arguments.
我的输出变量只有一个值,就是误差值
改了函数名就没问题了

rocwoods 发表于 2007-6-28 13:47

楼主编写的函数本身没有错误。
这个问题一方面是我说的函数名的问题,另一方面可能跟你的MATLAB搜索顺序也有关系。我猜楼主没修改之前的error函数存放的文件夹的搜索优先级排在MATLAB自带的error所在文件夹之后。
而lxq的正好与之相反。也就是说楼主的MATLAB最先找到的是MATLAB自带的error函数,而对楼主编写的error函数根本就没有搜索到。
而lxq的MATLAB最先找到的是后来写的error函数,把MATLAB自带的忽略了。因而运行没有错误。
可以敲入pathtool看MATLAB的搜索优先顺序。

[ 本帖最后由 rocwoods 于 2007-6-28 13:50 编辑 ]

chuxue 发表于 2007-6-28 15:44

哦,这样呀
明白了,我就觉得程序没问题
建议eight同学把标题重新改一下,
我猜他只看了
??? Error using ==> error
Too many output arguments.
而没有看程序
才会把标题改成“输出变量太多的问题导致程序出错”

lxq 发表于 2007-6-28 16:27

原帖由 chuxue 于 2007-6-28 11:33 发表 http://www.chinavib.com/forum/images/common/back.gif
是一致呀
lxq不改函数名也能运行?
我这不行
怪!

我是在另外一个函数名下运行你的程序的

函数名并不是error

eight 发表于 2007-6-28 18:16

原帖由 chuxue 于 2007-6-28 12:03 发表 http://www.chinavib.com/forum/images/common/back.gif
这个问题是输出变量太多造成的吗?
应该是2楼说的函数名出问题了,运行时把error看成是自带的函数了,所以出现Too many output arguments.
我的输出变量只有一个值,就是误差值
改了函数名就没问题了

我是站在你的立场上面来描述这个帖子,毕竟在大家没有给出答案之前这是你得到的matlab出错信息:??? Error using ==> error
Too many output arguments.
页: [1]
查看完整版本: 输出变量太多的问题导致程序出错