Matlab绘制频散曲线程序代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

function disper

%绘制平板频散曲线

%tic

clc;clear;

cl=5790;%材料纵波波速(钢板)

cs=3200;%材料横波波速(钢板)

dfd=0.01*1e3;

fd0=(0.01:dfd/1e3:20)*1e3;%频厚积(MHz*mm)d_Q235=6;

cps_min=2700;

cpa_min=100;

cp_max=10000;

mode=3;%绘制的模式数

precision=1e-8;

cpa=zeros(length(fd0),mode);

cps=zeros(length(fd0),mode);

for i=1:length(fd0)

fd=fd0(i);

[cp12 n]=ss(cps_min,cp_max,fd,cl,cs,mode);

for j=1:n

cp1=cp12(j,1);

cp2=cp12(j,2);

cps(i,j)=serfen(cp1,cp2,fd,cl,cs,precision);

end

[cp12 n]=aa(cpa_min,cp_max,fd,cl,cs,mode);

for j=1:n

cp1=cp12(j,1);

cp2=cp12(j,2);

cpa(i,j)=aerfen(cp1,cp2,fd,cl,cs,precision);

end

end

h=zeros(mode,2);

%相速度

figure(1)

for j=1:2

if j==1

cp=cps;

color='b';

else

cp=cpa;

color='r';

end

for i=1:mode

cpp=cp(:,i);

ind=find(cpp==0);

if ~isempty(ind)

h(i,j)=plot((fd0(ind(end)+1:end))/d_Q235,cpp(ind(end)+1:end),color);

else

h(i,j)=plot(fd0/d_Q235,cpp,color);

end

hold on

end

if j==2

xlabel('f/(KHz)')

ylabel('C_{p}/(km·s^{-1})')

title('6mm钢板相速度频散曲线')

set(gca,'xtick',(0:0.6:20)*1e3/d_Q235,'xticklabel',(0:0.6:20)*1e3/d_Q235)

xlim([0, 1000]);%

set(gca,'ylim',[0 cp_max],'ytick',(0:cp_max/1e3)*1e3,...

'yticklabel',0:cp_max/1e3)

grid on

hSGroup = hggroup;%要在子对象构建之后构建,构建后立即使用,否则将失效

hAGroup = hggroup;

set(h(:,1),'parent',hSGroup)

set(h(:,2),'parent',hAGroup)

set(get(get(hSGroup,'Annotation'),'LegendInformation'),...

'IconDisplayStyle','on');

set(get(get(hAGroup,'Annotation'),'LegendInformation'),...

'IconDisplayStyle','on');

legend('对称模式','反对称模式')

end

end

%群速度

figure(2)

for j=1:2

if j==1

cp=cps;

color='b';

else

cp=cpa;

color='r';

end

for i=1:mode

cpp=cp(:,i);

ind=find(cpp==0);

if ~isempty(ind)

fd=fd0(ind(end)+1:end)';

cpp=cpp(ind(end)+1:end);

else

fd=fd0';

end

dcdf=diff(cpp)/dfd;

cg=cpp(1:end-1).^2./(cpp(1:end-1)-fd(1:end-1).*dcdf);

h(i,j)=plot(fd(1:end-1)/d_Q235,cg,color);

hold on

end

if j==2

xlabel('f/(KHz)')

ylabel('C_{g}/(km·s^{-1})')

title('6mm钢板群速度频散曲线')

set(gca,'xtick',(0:0.6:20)*1e3/d_Q235,'xticklabel',(0:0.6:20)*1e3/d_Q235)

xlim([0, 1000]);%

set(gca,'ylim',[0 5.5]*1e3,'ytick',(0:0.5:5.5)*1e3,'yticklabel',0:0.5:5.5)

grid on

hSGroup = hggroup;%要在子对象构建之后构建,构建后立即使用,否则将失效

hAGroup = hggroup;

set(h(:,1),'parent',hSGroup)

set(h(:,2),'parent',hAGroup)

set(get(get(hSGroup,'Annotation'),'LegendInformation'),...

'IconDisplayStyle','on');

set(get(get(hAGroup,'Annotation'),'LegendInformation'),...

'IconDisplayStyle','on');

legend('对称模式','反对称模式')

end

end

%toc

end

%对称模式

function [cp0 n]=ss(cp_min,cp_max,fd,cl,cs,mode)

cp2=cp_min;

deter=33;

cp0=zeros(mode,2);

n=0;

while cp2

cp1=cp2;

cp2=cp1+deter;

y1=smode(cp1,fd,cl,cs);

y2=smode(cp2,fd,cl,cs);

while y1*y2>0&&cp2

cp1=cp2;

cp2=cp1+deter;

y1=smode(cp1,fd,cl,cs);

y2=smode(cp2,fd,cl,cs);

end

if y1*y2<0

n=n+1;

cp0(n,:)=[cp1 cp2];

else

if y1==0&&y2~=0

n=n+1;

相关文档
最新文档