• 大小: 7KB
    文件类型: .m
    金币: 2
    下载: 10 次
    发布日期: 2021-06-09
  • 语言: Matlab
  • 标签: 频散曲线  

资源简介

计算并绘制兰姆波频散曲线的MATLAB程序,以铝板中的Lamb波为例子,计算并绘制对称模式和反对称模式下的频散曲线。

资源截图

代码片段和文件信息

function dispersion
%绘制平板频散曲线
%tic
clc;clear;
cl=5850;    %材料纵波波速(铝板)
cs=3127;    %材料横波波速(铝板)
dfd=0.01*1e3;
fd0=(0.01:dfd/1e3:20)*1e3;  %频厚积(MHz*mm)
d_lv=2.5;

cps_min=0;
cpa_min=0;
cp_max=10000;
mode=2; %绘制的模式数
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_mincp_maxfdclcsmode);
    for j=1:n
        cp1=cp12(j1);
        cp2=cp12(j2);
        cps(ij)=serfen(cp1cp2fdclcsprecision);
    end
    
    [cp12 n]=aa(cpa_mincp_maxfdclcsmode);
    for j=1:n
        cp1=cp12(j1);
        cp2=cp12(j2);
        cpa(ij)=aerfen(cp1cp2fdclcsprecision);
    end
end

h=zeros(mode2);
%绘制相速度
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(ij)=plot((fd0(ind(end)+1:end))/d_lvcpp(ind(end)+1:end)color);
        else
            h(ij)=plot(fd0/d_lvcppcolor);
        end
        hold on
    end
    if j==2
        xlabel(‘f/(KHz)‘)
        ylabel(‘C_{p}/(km?s^{-1})‘)
        title(‘5mm铝板 相速度频散曲线‘)
        set(gca‘xtick‘(0:0.6:20)*1e3/d_lv‘xticklabel‘(0:0.6:20)*1e3/d_lv)
        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(ij)=plot(fd(1:end-1)/d_lvcgcolor);
        hold on
    end
    if j==2
        xlabel(‘f/(KHz)‘)
        ylabel(‘C_{g}/(km?s^{-1})‘)
        title(‘5mm铝板 群速度频散曲线‘)
        set(gca‘xtick‘(0:0.6:20)*1e3/d_lv‘xticklabel‘(0:0.6:20)*1e3/d_lv)
        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‘

评论

共有 条评论