| 查看: 2261 | 回复: 19 | ||
百里道木虫 (初入文坛)
|
[求助]
matlab函数调用与数组的问题
|
|
|
for i=1:I for j=1:J for n=0:N-1 f(i,j,n)=feq(u,n,rho); end end end function result=feq(u,n,rho) %u(i,j,1)是坐标位置为(i,j)处的水平速度,u(i,j,2)是竖直方向的速度 w=[4/9,1/9,1/9,1/9,1/9,1/36,1/36,1/36,1/36]; e=[0,0;1,0;0,1;-1,0;0,-1;1,1;-1,1;-1,-1;1,-1]; for i=1:I-1 for j=1:J-1 for n=1:N eu=e(n,1).*u(:,:,1)+e(n,2).*u(:,:,2); uv=u(:,:,1).*u(:,:,1)+u(:,:,2).*u(:,:,2); %uv是水平方向与竖直方向速度的平方和 result=w(n)*rho*(1+3*eu+4.5*eu.*eu-1.5*uv); end end end feq这么调用对不?eu和uv的写法对不? 本人初学,函数调用数组这方面不明白,请指点 |
» 猜你喜欢
自荐读博
已经有8人回复
投稿Elsevier的杂志(返修),总是在选择OA和subscription界面被踢皮球
已经有8人回复
自然科学基金委宣布启动申请书“瘦身提质”行动
已经有4人回复
求个博导看看
已经有18人回复
» 本主题相关价值贴推荐,对您同样有帮助:
matlab里面怎么实现结构体数组的可视化??????
已经有13人回复
求助 matlab交点问题
已经有19人回复
matlab的函数调用问题
已经有3人回复
问个关于matlab里find函数的问题!
已经有4人回复
VS2005下matlab调用
已经有8人回复
matlab做函数图象的问题
已经有6人回复
【求助】关于matlab的高维数组
已经有6人回复

百里道
木虫 (初入文坛)
- 应助: 0 (幼儿园)
- 金币: 1797
- 散金: 5
- 帖子: 46
- 在线: 11.1小时
- 虫号: 1070800
- 注册: 2010-08-07
- 性别: GG
- 专业: 工程热物理相关交叉领域
百里道: 回帖置顶 2012-10-28 08:52:42
|
按上面你说的可不可以认为feq在子程序只与n有关,所以在主程序调用的时候都要写成feq(i,j, ,而不是feq(i,j,n)?可是这样的胡,后面的程序 for i=2:I for j=2:J for n=1:N ip=i-e(n,1); jp=j-e(n,2); p=[u(ip,jp,1),u(ip,jp,2)]; rho1=rho(ip,jp); F(i,j, =f(ip,jp, +(result(p,rho1)-f(ip,jp, )/tau;end end end 运行后会出现 ??? Error using ==> minus Matrix dimensions must agree. Error in ==> LBGK_D2Q9_liddrivenflow at 44 F(i,j, =f(ip,jp, +(result(p,rho1)-f(ip,jp, )/tau;提示矩阵维数不一致,是不是说f(i,j,n)是三维的,而调用的feq(n)是一维的,这样的话怎么把feq变为三维数组? 不知道我的理解对不对?怎么样才能把feq变成三维数组? 还有一个问题,如果把主程序的这部分改为 for i=2:I for j=2:J for n=1:N ip=i-e(n,1); jp=j-e(n,2); p=[u(ip,jp,1),u(ip,jp,2)]; rho1=rho(ip,jp); F(i,j,n)=f(ip,jp,n)+(result(p,rho1)-f(ip,jp,n))/tau; end end end 提示出现错误 ??? Assignment has more non-singleton rhs dimensions than non-singleton subscripts Error in ==> LBGK_D2Q9_liddrivenflow at 44 F(i,j,n)=f(ip,jp,n)+(result(p,rho1)-f(ip,jp,n))/tau; 这句是什么意思? |

16楼2012-10-27 09:53:25
2楼2012-10-22 19:02:35
百里道
木虫 (初入文坛)
- 应助: 0 (幼儿园)
- 金币: 1797
- 散金: 5
- 帖子: 46
- 在线: 11.1小时
- 虫号: 1070800
- 注册: 2010-08-07
- 性别: GG
- 专业: 工程热物理相关交叉领域

3楼2012-10-23 08:28:36
4楼2012-10-23 09:16:44
百里道
木虫 (初入文坛)
- 应助: 0 (幼儿园)
- 金币: 1797
- 散金: 5
- 帖子: 46
- 在线: 11.1小时
- 虫号: 1070800
- 注册: 2010-08-07
- 性别: GG
- 专业: 工程热物理相关交叉领域
|
改为这样 %Initialization F=zeros(I,J,N); f=zeros(I,J,N);u=zeros(I,J,2);rho=zeros(I,J); for i=1:I+1 for j=1:J+1 u(i,j,1)=0;u(i,j,2)=0; rho(i,j)=rho0; u(i,J+1)=U; for n=1:N feq(i,j,n)=result(u,n,rho(i,j)); f(i,j,n)=feq(i,j,n); end end end 。。。。。。。。 function feq=result(u,n,rho) % double eu,uv,feq; w=[4/9,1/9,1/9,1/9,1/9,1/36,1/36,1/36,1/36]; e=[0,0;1,0;0,1;-1,0;0,-1;1,1;-1,1;-1,-1;1,-1]; I=256;J=256; N=length(w); for i=1:I-1 for j=1:J-1 for n=1:N eu=e(n,1).*u(i,j,1)+e(n,2).*u(i,j,2); uv=u(i,j,1).*u(i,j,1)+u(i,j,2).*u(i,j,2); feq=w(n)*rho*(1+3*eu+4.5*eu.*eu-1.5*uv); end end end 还是busy ctrl+c后出现 ??? Operation terminated by user during ==> LBGK_D2Q9_liddrivenflow>result at 94 In ==> LBGK_D2Q9_liddrivenflow at 25 feq(i,j,n)=result(u,n,rho(i,j)); 我觉得是调用函数这里除了问题,自己写的feq,不知道错在哪里,请指教! |

5楼2012-10-24 09:38:37

6楼2012-10-24 13:33:14
百里道
木虫 (初入文坛)
- 应助: 0 (幼儿园)
- 金币: 1797
- 散金: 5
- 帖子: 46
- 在线: 11.1小时
- 虫号: 1070800
- 注册: 2010-08-07
- 性别: GG
- 专业: 工程热物理相关交叉领域

7楼2012-10-24 16:23:36

8楼2012-10-24 17:27:13
百里道
木虫 (初入文坛)
- 应助: 0 (幼儿园)
- 金币: 1797
- 散金: 5
- 帖子: 46
- 在线: 11.1小时
- 虫号: 1070800
- 注册: 2010-08-07
- 性别: GG
- 专业: 工程热物理相关交叉领域

9楼2012-10-25 09:28:35

10楼2012-10-25 09:42:05







回复此楼
,而不是feq(i,j,n)?
