Matlab错误:输出参数太多

时间:2010-04-08 22:20:59

标签: matlab

我在 Matlab 程序中使用以下函数:

...   
...   
...  
[A, B, C, D, E] = function (F, G, H, I, J, K, L, M, N, O, P)  
...  
...  
...  

我收到以下错误消息:

??? Error using ==> function  
Too many output arguments.  

A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P 是输入和输出的矢量。功能。

但是当我用完整的脚本替换函数行时,同样的程序工作得很好!

你能告诉我应该在哪里找到错误吗?

8 个答案:

答案 0 :(得分:3)

您是否致电您的职能function?这是一个非常糟糕的想法,因为function是一个保留的关键词。

假设您在示例中仅使用“function”替换了要调用的函数的名称:您需要在函数定义中定义输入和输出。例如,对于一个名为'myFun'的函数,它接受F-P作为输入,并且应该返回A-E作为输出,你写为函数的第一行

function [A,B,C,D,E] = myFun(F,G,H,I,J,K,L,M,N,O,P)

修改

澄清:你得到错误,因为你要求的输出参数多于函数可以提供的参数。如果您调用[u,v]=sin(0),则会收到相同的错误,因为sin仅定义为1输出。因此,您必须检查函数的签名以解决问题。

编辑2

让我们举个例子

我打开编辑器并定义函数

function [A,B,C] = myFun(D,E,F)
%# myFun returs the pairwise sums of the input arguments

A = D+E;
B = E+F;
C = F+D;

然后,我将该函数保存为Matlab路径上的“myFun.mat”。

现在我可以这样打电话给myFun:

[A,B,C] = myFun(1,2,3);

但是,如果我用四个输出参数调用myFun,我将收到错误

[A,B,C,D] = myFun(1,2,3);

事实上,我得到了你所得到的错误,因为我只用三个输出参数定义了myFun。

注意:您总是可以使用少于定义的输出参数的数量来调用函数,但是永远不会更多。

答案 1 :(得分:2)

Matlab 拒绝接受诸如

之类的作业
[x,y]=[firstvalue,secondvalue] 

Matlab shell中试试这个。它会给你同样的错误。

或者,做

z=[fv,sv]; x=z(1); y=z(2);

编辑:没关系。它不适合你的问题。

答案 2 :(得分:0)

我试图用A,B,C,D,E每次输出单个输出来测试程序 功能[A] = myFun1(F,G,H,I,J,K,L,M,N,O,P)
功能[B] = myFun2(F,G,H,I,J,K,L,M,N,O,P)
功能[C] = myFun3(F,G,H,I,J,K,L,M,N,O,P)
功能[D] = myFun4(F,G,H,I,J,K,L,M,N,O,P)
函数[E] = myFun5(F,G,H,I,J,K,L,M,N,O,P)

它有效并且程序运行良好,但输出是myFun1,myFun2,myFun3,myFun4,myFun5等5个功能之间的唯一区别。
我觉得这不实用 那么有没有办法让单个函数myfun有5个输出?

答案 3 :(得分:0)

我的节目:

clc;  
clear all;  

load('C:\Users\Documents\MATLAB\myFile\matrice_F.mat');  
load('C:\Users\Documents\MATLAB\myFile\matrice_G.mat');  
load('C:\Users\Documents\MATLAB\myFile\matrice_H.mat');  
load('C:\Users\Documents\MATLAB\myFile\matrice_I.mat');  
F = m_F;  
G = m_G;  
H = m_H;  
I = m_I;  

load('C:\Users\Documents\MATLAB\myFile\matrice_J.mat');  
load('C:\Users\Documents\MATLAB\myFile\matrice_K.mat');  
load('C:\Users\Documents\MATLAB\myFile\matrice_L.mat');  
load('C:\Users\Documents\MATLAB\myFile\matrice_M.mat');  
J = m_J;  
K = m_K;  
L = m_L;  
M = m_M;  

load('C:\Users\Documents\MATLAB\myFile\matrice_Result.mat');  
N = m_N ;  
O = m_O;  
P = m_P;  


[A,B,C,D,E] = myFun(F,G,H,I,J,K,L,M,N,O,P);  


file_name = 'matrice_final.mat';  
save(file_name,'A','B','C','D','E');  

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%        

我的职能:

function %matrice_return%  [AA,BB,CC,DD,EE] = myFun(Q,R,S,T,U,V,W,X,Y,Z,ZZ)  

AA=zeros(1,10);  
BB=zeros(1,10);  
CC=zeros(1,10);  
DD=zeros(1,10);  
EE=zeros(1,10);  

for i=1:1:10  

        if  Q(i)>1   
            AA(i)=R(i)*S(i);  
        end  
        if  R(i)>1   
            BB(i)=T(i)*U(i);              
        end  
        if  S(i)>1   
            CC(i)=V(i)*W(i);              
        end  
        if  T(i)>1   
            DD(i)=X(i)*Y(i);              
        end  
        if  U(i)>1   
            EE(i)=Z(i)*ZZ(i);              
        end  
end  


%matrice_return = [AA,BB,CC,DD,EE];%  %%error

我的问题解决了,我感谢所有花时间解决问题的人。

我没想到解决方案如此简单!!

答案 4 :(得分:0)

我假设你的函数确实有5个输出参数。 如果是这样,可能在Matlab路径中有一些具有相同名称的其他函数具有不同数量的输出参数。 如果我创建具有相同名称但更多或更少输出参数的函数,我现在也会发生这种情况。

我看到你从指定的路径加载数据。也许你不在你真正想要调用的功能的文件夹中。

尝试重命名您的函数(文件+函数名称)。同时尝试将路径设置为默认值(文件 - >设置路径...->默认值)并将目录更改为包含您的功能的目录。如果这些都不起作用,那么再次尝试所有步骤,我很确定这是你错误的原因。

答案 5 :(得分:0)

@lebland

您发布的代码定义了一个函数,其中包含一个名为matrice_return的返回变量。您似乎想要返回五个变量AA,BB,CC,DD,EE。所以现在编辑你的函数定义@Jonas非常清楚地解释了。如果您在问题中发布了您的定义,我们会在几个小时前对其进行整理。

答案 6 :(得分:0)

您的问题在于matrice_return变量。而不是:

function matrice_return = myFun(Q,R,S,T,U,V,W,X,Y,Z,ZZ) 
.
.
.
matrice_return = [AA,BB,CC,DD,EE];

尝试:

function [AA,BB,CC,DD,EE] = myFun(Q,R,S,T,U,V,W,X,Y,Z,ZZ)

答案 7 :(得分:0)

如果您不想更改myFun定义,可以在脚本中执行以下操作:

myFun_result = myFun(F,G,H,I,J,K,L,M,N,O,P);
A = myFun_result(1:10);
B = myFun_result(11:20);
C = myFun_result(21:30);
D = myFun_result(31:40);
E = myFun_result(41:50);