调用期间未分配输出参数(MATLAB)

调用期间未分配输出参数(MATLAB),matlab,Matlab,我在MATLAB中使用这个函数有点困难,我不知道问题出在哪里。错误是 Output argument "x" (and maybe others) not assigned during call to "SDLS". Error in NO_wk4_Q3c (line 7) x = SDLS( A, x0, b, 1e-3 ); 据我所知,这与“x”的输出有关,但我在函数文件中指定了“x”。这与“while”循环有关吗 下面是函数文件: function [ x, k ] = SDLS(

我在MATLAB中使用这个函数有点困难,我不知道问题出在哪里。错误是

Output argument "x" (and maybe others) not assigned during call to "SDLS".

Error in NO_wk4_Q3c (line 7)
x = SDLS( A, x0, b, 1e-3 );
据我所知,这与“x”的输出有关,但我在函数文件中指定了“x”。这与“while”循环有关吗

下面是函数文件:

function [ x, k ] = SDLS( A, x0, b, tol )
% Steepest descent with exact line search.
% A is the input matrix, x0 is the initial guess, b is a vector, tol is the
% tolerence level for convergence.

if nargin < 4
    tol=eps;
end

g = A*x0+b; % Derivative of Q(x)=(1/2)x'Ax+b'x+c;
p = zeros(1,1);
k = 0;
x=zeros(1,1);

while norm(g,2)>=1e-3
    g = A*x0 + b;
    p = -g; % direction vector
    alpha = -(transpose(g)*p)/(transpose(p)*A*p); % step length
    x = x0 + alpha*p; % updates approximation
    x0 = x;
    k = k+1;
end
end

任何建议都很好:-)

您确定这是MATLAB正在执行的代码吗?您是否对SDL进行了更改而没有保存它们?这是MATLAB正在执行的代码,我刚刚再次测试,得到了相同的错误。重新启动MATLAB。提供的代码无法生成该错误。因此,我问您是否确定这是MATLAB正在执行的代码。将告诉您MATLAB正在调用哪个文件。@wildboy您应该始终注意MATLAB将只执行MATLAB路径上的第一个函数,该路径的名称与它可以找到的调用类似。因此,您实际上不应该将函数复制到多个位置。至少不在您的搜索路径上。
clear all; 

A = [4 2; 2 3]; % Matrix
x0 = [ -1; -1]; % Initial guess
b = [ 3; 1];

[ x, k] = SDLS( A, x0, b, 1e-3 );