调用子函数问题
主函数nr=8;
ns=5;
c=340;
f=200;
Lx=1.0;
Ly=1.5;
pa=[-1.307;
-2.141;
-2.141;
-.284;
.256e-2;
-11.552;
-.150e-5;
-.266e-1;
-.292e-7;
-3.357;
-.934e-10;
.184;
.671e-13;
-2.404;
.318e-13;
.146;
-.160e-14;
-3.476;
-1.133;
-2.195;
3.806;
.730;
.382;
11.502;
.655e-2;
-4.081;
.119e-2;
6.886;
.110e-3;
-.815]; %pa为实部系数
pa1=[-1.117;
0.542;
0.542;
-7.569;
-.364e-3;
-1.984;
-.131e-5;
.448e-1;
.689e-8;
-.622;
-721e-10;
.696e-1;
.239e-13;
-.494;
.415e-14;
.338e-1;
-.111e-15;
-.707;
-2.785;
2.668;
-10.015;
10.489;
.428e-1;
2.206;
.225e-3;
-1.216;
.252e-3;
1.504;
.171e-4;
-.354;] %pa1为虚部系数
x=0:50;
y=-10:10;
=meshgrid(x,y);
zz=press(xx,yy,pa,pa1,nr,ns,c,f,Lx,Ly);
=contour('v6',xx,yy,zz);
clabel(c,h);
子函数
function press(xx,yy,pa,pa1,nr,ns,c,f,Lx,Ly);
k=2*pi*f/c;
z=zeros(size(x));
for r=0:nr
krx=r*pi/Lx;
kry=sqrt(k^2-krx^2);
arx=pa(2*r+1)*cos(krx*x+kry*y)+pa(2*r+2)*cos(krx*x-kry*y)+pa1(2*r+1)*sin(krx*x+kry*y)+pa1(2*r+2)*sin(krx*x-kry*y);%压力函数的实部
ary=pa1(2*r+1)*cos(krx*x+kry*y)+pa1(2*r+2)*cos(krx*x-kry*y)+pa(2*r+1)*sin(krx*x+kry*y)+pa(2*r+2)*sin(krx*x-kry*y);%压力函数的虚部
zr=sqrt(arx^2+ary^2);
z=z+zr;
end
for s=0:ns
ksy=s*pi/Ly;
ksx=sqrt(k^2-ksy^2);
asx=pa(2*nr+2+2*s+1)*cos(ksx*x+ksy*y)+pa(2*nr+2+2*s+2)*cos(-ksx*x+ksy*y)+pa1(2*nr+2+2*s+1)*sin(ksx*x+ksy*y)+pa1(2*nr+2+2*s+2)*sin(-ksx*x+ksy*y);%压力函数实部
asy=pa1(2*nr+2+2*s+1)*cos(ksx*x+ksy*y)+pa1(2*nr+2+2*s+2)*cos(-ksx*x+ksy*y)+pa(2*nr+2+2*s+1)*sin(ksx*x+ksy*y)+pa(2*nr+2+2*s+2)*sin(-ksx*x+ksy*y);%压力函数虚部
zs=sqrt(asx^2+asy^2);
z=z+zs;
end
帮忙看看哪错了?怎么改?老是运行错误,谢谢 原帖由 lyj 于 2007-4-10 12:33 发表
主函数
nr=8;
ns=5;
c=340;
f=200;
Lx=1.0;
Ly=1.5;
pa=[-1.307;
-2.141;
-2.141;
-.284;
.256e-2;
-11.552;
-.150e-5;
-.266e-1;
-.292e-7;
-3.357;
...
你的子函数n多语法错误,建议先看看基础书 function z=press(xx,yy,pa,pa1,nr,ns,c,f,Lx,Ly);
还有哪错了,望指点,着急中!!!!! 原帖由 lyj 于 2007-4-10 16:06 发表
function z=press(xx,yy,pa,pa1,nr,ns,c,f,Lx,Ly);
还有哪错了,望指点,着急中!!!!!
你好好修改一下 press 函数,按照你现在的定义,函数没有输出,而且有些输入变量没有使用 什么意思啊?能多给点提示吗? 原帖由 lyj 于 2007-4-10 17:01 发表
什么意思啊?能多给点提示吗?
按照你的代码,及我的理解,子函数至少应该是:
把 function press(xx,yy,pa,pa1,nr,ns,c,f,Lx,Ly); 改为 function z = press(xx,yy,pa,pa1,nr,ns,c,f,Lx,Ly),即输出是 z 。另外该函数中所有 x 都应该换为 xx,因为你的输入是xx,x 根本没有定义
还是建议多看看书,如果没有一点基础,这样一来一回发问、回复更加浪费时间,而且你按照上述修改后,很可能又会出现新的问题,自己没有掌握的话就会处处碰壁
[ 本帖最后由 eight 于 2007-4-10 17:34 编辑 ] 我也在看,也不是完全没基础,只是现在特别着急用,不能一下发现问题,还请您帮帮忙,本人不甚感激!!!!!!!
function z = press(x,y,pa,pa1,nr,ns,c,f,Lx,Ly)
k=2*pi*f/c;
z=zeros(size(x));
for r=0:nr
krx=r*pi/Lx;
kry=sqrt(k^2-krx^2);
arx=pa(2*r+1)*cos(krx*x+kry*y)+pa(2*r+2)*cos(krx*x-kry*y)+pa1(2*r+1)*sin(krx*x+kry*y)+pa1(2*r+2)*sin(krx*x-kry*y);%压力函数的实部
ary=pa1(2*r+1)*cos(krx*x+kry*y)+pa1(2*r+2)*cos(krx*x-kry*y)+pa(2*r+1)*sin(krx*x+kry*y)+pa(2*r+2)*sin(krx*x-kry*y);%压力函数的虚部
zr=sqrt(arx.^2+ary.^2);
z=z+zr;
end
for s=0:ns
ksy=s*pi/Ly;
ksx=sqrt(k^2-ksy^2);
asx=pa(2*nr+2+2*s+1)*cos(ksx*x+ksy*y)+pa(2*nr+2+2*s+2)*cos(-ksx*x+ksy*y)+pa1(2*nr+2+2*s+1)*sin(ksx*x+ksy*y)+pa1(2*nr+2+2*s+2)*sin(-ksx*x+ksy*y);%压力函数实部
asy=pa1(2*nr+2+2*s+1)*cos(ksx*x+ksy*y)+pa1(2*nr+2+2*s+2)*cos(-ksx*x+ksy*y)+pa(2*nr+2+2*s+1)*sin(ksx*x+ksy*y)+pa(2*nr+2+2*s+2)*sin(-ksx*x+ksy*y);%压力函数虚部
zs=sqrt(asx.^2+asy.^2);
z=z+zs;
end
以上代码保存为 press.m 原帖由 lyj 于 2007-4-10 17:25 发表
我也在看,也不是完全没基础,只是现在特别着急用,不能一下发现问题,还请您帮帮忙,本人不甚感激!!!!!!!
需要特别注意 点运算 和 矩阵运算 的区别,即 .^ 和 ^ 、.* 和 * 之间的区别
页:
[1]