Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2010-05-31, 01:51   #1
fourseasons
初级会员
 
注册日期: 2010-05-30
帖子: 4
声望力: 0
fourseasons 正向着好的方向发展
默认 @@@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
fourseasons 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 12:04


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.