![]() |
@@@matlab 写函数中的平面数组的问题◎◎◎
我用“追赶法”也就是消元法写了一个解3点迭代方程的函数func,在主函数里调用。一维没问题,二维遇到个郁闷的问题。
function x=func(a,b,c,d) [M N]=size(b) n=20; for i=1:N*n a(1,i)=0; c(M*n,i)=0; p(1,i)=-c(1,i)/b(1,i);q(1,i)=d(1,i)/b(1,i); end for i=1:N*n for j=2:M*n p(j,i)=-c(j,i)/(b(j,i)+a(j,i)*p(j-1,i)); q(j,i)=(d(j,i)-a(j,i)*q(j-1,i))/(b(j,i)+a(j,i)*p(j-1,i)); end end for i=1:N*n x(M*n,i)=q(M*n,i); end for i=1:N*n for j=M*n-1:-1:1 x(j,i)=p(j,i)*x(j+1,i)+q(j,i); end end a、b、c、d在主函数里对应的系数都已经赋值好,是(M*n N*n)矩阵。像我这样在程序第7行就会出现错误,提示Attempted to access b(1,2); index out of bounds because size(b)=[1,1]. 难道说,matlab以为我func函数里的x、a、b、c、d是一维的?b对应的系数项在主程序里都写好了阿。 是单独在这个调用函数里出问题吗? 下面是没问题的一维调用函数: function x=func(a,b,c,d) n=length(d); a(1)=0;c(n)=0; p(1)=-c(1)/b(1);q(1)=d(1)/b(1); for i=2:n p(i)=-c(i)/(b(i)+a(i)*p(i-1)); q(i)=(d(i)-a(i)*q(i-1))/(b(i)+a(i)*p(i-1)); end x(n,1)=q(n); for i=n-1:-1:1 x(i,1)=p(i)*x(i+1,1)+q(i); end x=x'; end |
所有时间均为北京时间。现在的时间是 03:27。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.