MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB基础] @@@matlab 写函数中的平面数组的问题◎◎◎ (https://www.labfans.com/bbs/showthread.php?t=11658)

fourseasons 2010-05-31 01:51

@@@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.