Octave无法在循环中填充矩阵

时间:2013-11-04 21:10:34

标签: matlab loops octave

我是Octave的基础,有人可以帮我解决我的代码吗?

A = zeros(40);
format long
function xn=xnf(n,xn,c)
    if n<=40
        xn = xn^2+c;
        A(n,n)=xn;
        n++;
        xnf(n,xn,c);
    end
end
xnf(1,2,-2)

我想将xn值添加到矩阵中,但它始终具有零值 - 为什么?

2 个答案:

答案 0 :(得分:1)

对于您指定的值(n=1xn=2c=-2),您将获得的矩阵沿主对角线为2,其他地方为零,可以使用{ {1}}。

如果你想改变参数,这段代码可以在Matlab中使用,因此应该在八度音程中工作:

A=diag(2*ones(40,1))

答案 1 :(得分:1)

我对Octave知之甚少但在matlab中如果我想将值xn添加到矩阵A中,我想要的是矩阵然后我会这样做

function A=xnf(n,xn,c,A)
   if n<=40
       xn = xn^2+c;
       A(n,n)=xn;
       n=n+1;
       A=xnf(n,xn,c,A);
   end
end

因为函数内部使用的所有变量都会在您返回后被删除,所以如果您需要A矩阵,请确保将其返回