繁体   English   中英

Octave无法在循环中填充矩阵

[英]Octave Can't fill matrix in loop

我是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值添加到矩阵中,但它始终具有零值 - 为什么?

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

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

N=40;
V=zeros(1,N);
V(1)=xn;
for i=2:N
    V(i)=V(i-1)^2+c;
end
A=diag(V);

我对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矩阵,请确保你返回它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM