声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 929|回复: 2

[编程技巧] 子函数问题

[复制链接]
发表于 2007-4-2 12:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
主函数
nr=8;
ns=5;
c=340;
f=200;
Lx=1.0;
Ly=1.5;
Fload=1;
c=340;
f=200;
k=2*pi*f/c;
omga=2*pi*f;
Ds=2790;
t=0.002;
v=0.3;
x0b=0.5;
E=9.0e10;
D=E*t^3/(12*(1-v^2));
sp=sqrt(Ds*t*omga^2/D);
kb=sqrt(sp);
x0=0;
y0=Ly;
x0b=0.5;
xL=0.75;
yL=Ly;

pa=[-1.3074595419709599954744908199350-1.1178421701609262779191172963543*i;
    -2.1419347448577814978824792283538+.54226343783168696570143502429165*i;
    -2.1419347448577814978824792283538+.54226343783168696570143502429165*i;
    -.28477516991556225481549720421302-7.5695967046072346160853897402738*i;
    .25681688039802282021949032699772e-2-.36480361525079985347977300038957e-3*i;
    -11.552673242172933623664505755353-1.9842023484059742513254299888543*i;
    -.15066042005115154928195265024055e-5-.13164819114188248728258948848312e-5*i;
    -.26643074473381624167909611346144e-1+.44845525191747337335794717015275e-1*i;
    -.29294534388885480232174606941733e-7+.68985260942501161603174994083569e-8*i;
    -3.3572356906929152654783765920341-.62275170318139111924367350633059*i;
    -.93432203704798141872362756914982e-10-.72147003827558447781754014197636e-10*i;
    .18477574650461411825990133714524+.69643314843822351389604080221670e-1*i;
    .67144708268613051375824230664001e-13+.23912945592549514399393923409312e-13*i;
    -2.4042439513841899026373073481966-.49443647026660076214075173830332*i;
    .31888142686235337453536890765351e-13+.41577968767913641569106826458398e-14*i;
    .14656386802451980566570751985030+.33821638918066454163066943575891e-1*i;
    -.16075291813391728441400894022810e-14-.11172224744475367494292649458716e-15*i;
    -3.4763979465412530072011954482998-.70702109012758536350606753947055*i;
    -1.1337439546847656335767379836349-2.7859168543235255372240884684427*i;
    -2.1950347508224869973467899995348+2.6682703571276959945329149964782*i;
    3.8068185963862306971204172162308-10.015168868300300326467005039347*i;
    .73088086449068780257760533260852+10.489448801049112050814729077912*i;
    .38296740139463286128809679304875+.42817224365123904627525239831680e-1*i;
    11.502566872535983871225361542744+2.2065965078174924877911184721727*i;
    .65531631784542024981352205322975e-2+.22517556517452104200571995844143e-3*i;
    -4.0812989287952567712320638427810-1.2163469106739017046132793425913*i;
    .11932126064122279294095117319846e-2+.25228481054234648895356675579208e-3*i;
    6.8866223873614596948566521017144+1.5049012062459786037770047620544*i;
    .11035819698915323129513189112547e-3+.17155452333052106377282878468401e-4*i;
    -.81577359289082468737794133066713-.35461635637143747745204348087842*i];
ws=[ -.26560903682895892401403483433532e-6+.16181964560317234342422539425173e-5*i
-.93476388354741557819081883129835e-13-.54601259842344909025282413681198e-13*i
    .58945888898025949496451118162366e-8-.20891630503267785090190789902021e-5*i
    .35385232641042426837773446049548e-5+.46542641795410518350211594373288e-6*i];

x=0:0.1:1;
y=-1.5:0.5:1.5;
[xx,yy]=meshgrid(x,y);
zz=dis(xx,yy,pa,ws,nr,ns,Lx,Ly,kb,D,x0,y0,x0b,xL,yL,k,Fload);
[c,h]=contourf('v6',xx,yy,real(zz));
clabel(c,h)

子函数
function z=dis(x,y,pa,ws,nr,ns,Lx,Ly,kb,D,x0,y0,x0b,xL,yL,k,Fload);

A1=zero(size(x));
for s=1:4;
    A1=A1+exp(kb*x*j^s).*ws(s);
end
sp=sqrt((xL-x0)^2+(yL-y0)^2);
cosp=(xL-x0)/sp;
sinp=(yL-y0)/sp;
A2=zero(size(x));
for r=0:nr;
    krx=r*pi/Lx;
    kry=sqrt(k^2-krx^2);
    A2=A2+cos(krx*(x0+x*cosp)).*(pa(2r+1)*exp(-j*kry*(y0+x*sinp))/(D*((krx*cosp+kry*sinp)^4-kb^4)+pa(2r+2)*exp(j*kry*(y0+x*sinp))/(D*((krx*cosp-kry*sinp)^4-kb^4)));
end
for s=1:ns;
    ksy=s*pi/Ly;
    ksx=sqrt(k^2-ksy^2);
    A2=A2+cos(ksy*(y0+x*sinp)).*(pa(2s+1)*exp(-j*ksx*(x0+x*cosp))/(D*(( ksx*cosp+ksy*sinp)^4-kb^4))+pa(2s+2)*exp( j*ksx*(x0+x*cosp))/(D*((-ksx*cosp+ksy*sinp)^4-kb^4)));
end

absd=abs(x-x0b);
wf=-j.*Fload.*(exp(-j.*kb*absd)-j.*exp(-kb.*absd))./(4.*D.*kb.^3);
z=A1+A2+wf;
高手帮忙看看,为什么老在子函数这出问题?谢谢啦
回复
分享到:

使用道具 举报

发表于 2007-4-2 14:48 | 显示全部楼层
在调用子函数是应将子函数保存为相应函数名的.m文件
另外:
A2=A2+cos(krx*(x0+x*cosp)).*(pa(2r+1)*exp(-j*kry*(y0+x*sinp))/(D*((krx*cosp+kry*sinp)^4-kb^4)+pa(2r+2)*exp(j*kry*(y0+x*sinp))/(D*((krx*cosp-kry*sinp)^4-kb^4)));

1) 2r,2s都是错误用法,如果是变量则不能以数字为开头命名,如果不是应为2*r,2*s
2) zero函数是应用在LTI系统中的函数,变量不是数字型,如初始化应采用zeros函数
3) A2l表达式的括号")"不匹配

评分

1

查看全部评分

发表于 2007-4-3 08:38 | 显示全部楼层
的确有不少问题。
我修改了一下,画出了图形,
但也许原程序的写法有误,图形效果不好。
z.jpg
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-13 01:53 , Processed in 0.090077 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表