Matlab 错误:输出参数太多

leb*_*lab 2 matlab

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

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

我收到以下错误消息:

??? Error using ==> function  
Too many output arguments.  
Run Code Online (Sandbox Code Playgroud)

A、B、C、D、E、F、G、H、I、J、K、L、M、N、O、P是函数的输入和输出向量。

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

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

Jon*_*nas 5

你调用你的函数了function吗?这是一个非常糟糕的主意,因为它function是一个保留关键字。

假设您在示例中简单地将要调用的函数的名称替换为“函数”:您需要在函数定义中定义输入和输出。例如,对于一个名为“myFun”的函数,它接受 FP 作为输入,并且应该返回 AE 作为输出,你写成函数的第一行

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

编辑

澄清:您收到错误是因为您要求的输出参数比函数可以提供的多。如果你调用[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;
Run Code Online (Sandbox Code Playgroud)

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

现在我可以这样调用 myFun:

[A,B,C] = myFun(1,2,3);
Run Code Online (Sandbox Code Playgroud)

但是,如果我用四个输出参数调用 myFun,我会得到一个错误

[A,B,C,D] = myFun(1,2,3);
Run Code Online (Sandbox Code Playgroud)

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

注意:您始终可以使用少于定义的输出参数数量调用函数,但绝不能使用更多。