递归地附加到MATLAB中的向量

时间:2013-04-18 14:00:55

标签: matlab recursion

我正在进行一项任务,其中必须找到位于区间[a,b)中的三对角对称矩阵的特征值的数量。我需要使用二分算法来找到这些特征值,它们必须以向量E的形式输出。函数是函数[E] =二分(A,a,b,tol),其中tol是可接受的误差范围

% If tolerance is met, add (a + b)/2 to E as many times as there are
% eigenvalues left in [a,b). This is the recursive stopping criterium.
if(b - a < tol)
    for i = 1:n
        E = [E; (a + b)/2];
    end
end

% If there are eigenvalues left in [a,b), add new eigenvalues to E through
% recursion.
if(n > 0)
    E = [E; bisection(A, a, (a+b)/2, tol); bisection(A, (a+b)/2, b, tol)];
end

E = [];

我要做的是用另一个二分函数调用扩展向量E.只有我收到此错误:

??? Undefined function or variable "E".

Error in ==> bisection at 56
    E = [E; bisection(A, a, (a+b)/2, tol); bisection(A, (a+b)/2, b, tol)];

我已经制作了一个空的向量E,我显然无法将其放入函数中。那么有没有办法递归地扩展一个向量?

1 个答案:

答案 0 :(得分:2)

如果你不能将空的起始向量放在函数中,你应该将它作为输入参数传递。

这就是顶级代码的样子:

E = [];
E = myRecursiveFunction(E,inputs,stoppingCriteria)