我在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是函数的输入和输出向量。
但是当我用完整的脚本替换函数行时,同一个程序运行得很好!
你能告诉我应该在哪里查找错误吗?
你调用你的函数了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。
注意:您始终可以使用少于定义的输出参数数量调用函数,但绝不能使用更多。