Matlab绘制频散曲线程序代码
MATLAB曲线曲面绘制代码大全
%plot3(x,y,z)用来绘制3维曲线图,而不能绘制曲面图!就是把所有的%(x,y,z)点连接在一起。
而画曲面图必须用surf和mesh函数,而这两个%函数都需要知道对应x,y向量交叉点内所有点处的z值,所以得用%x=-200:0.3:200;y=-200:0.1:200;%[X,Y]=meshgrid(x,y);%Z=X.*Y/sqrt(X.*X+Y.*Y)%获得z值,再用mesh(X, Y, Z);绘曲面图 ,下面为代码x=-200:0.3:200;y=-200:0.1:200;[X,Y]=meshgrid(x,y);Z=X.*Y./sqrt(X.*X+Y.*Y);mesh(X,Y,Z)%希望能解决你的问题!################################################################################ ###matlab画两曲面的交线悬赏分:100 - 解决时间:2009-10-4 19:37上半球面z.^2+y.^2+x.^2=1(z>=0) 与平面x+y+z=1.5的交线该怎么画出来?---------------------------[X,Y,Z]=sphere(50);Z(Z<0)=-(Z(Z<0));mesh(X,Y,Z)%画上半球面hold on;ezmesh('1.5-x-y',[-1 1])%画平面[x,y,z]=meshgrid(linspace(-1,1));contourslice(x,y,z,x+y+z-1.5,X,Y,Z,[0 0])%画交线axis equalview(135,20)################################################################################ ###两直线相交function [X,Y]=pll(X1,Y1,X2,Y2)% 直线相交求交点A1=Y1(1)-Y1(2);B1=X1(2)-X1(1);C1=Y1(2)*X1(1)-Y1(1)*X1(2);A2=Y2(1)-Y2(2);B2=X2(2)-X2(1);C2=Y2(2)*X2(1)-Y2(1)*X2(2);D=det([A1,B1;A2,B2]);X=det([-C1 B1;-C2 B2])/D;Y=det([A1 -C1;A2,-C2])/D;调用格式:x1=[1 5];y1=[1 5];x2=[1 5];y2=[5,1];[x,y]=pll(x1,y1,x2,y2);plot(x1,y1,'r');hold onplot(x2,y2,'b');plot(x,y,'ko');%直线与多条直线相交xi=[1 2 3 4 5];yi=[2 6 3 6 1];plot(xi,yi);hold onx1=[1 5];y1=[4 5];line(x1,y1);x=zeros(size(xi));y=x;for i=1:5-1x2=xi([i i+1]);y2=yi([i i+1]);[x,y]=pll(x1,y1,x2,y2);plot(x,y,'ro')end%直线与曲线相交x=-8:0.1:8;y=x;[X,Y]=meshgrid(x,y);R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R;contour(Z,3);hold onc=contour(Z,3);x=[0 360];y=[0 400];y=(y(2)-y(1))/(x(2)-x(1))*(x-x(1))+y(1);z=[0 0];line(x,y,z);c=c';X=c(:,1);Y=c(:,2);r0=abs(Y-(y(2)-y(1))/(x(2)-x(1))*(X-x(1))+y(1))<=.93; zz=0;yy=r0.*Y;xx=r0.*X;plot(xx(r0~=0),yy(r0~=0),'r')%曲线与曲线相交x=0:pi/400:2*pi;x=x';y1=sin(pi*x);y2=cos(pi*x);plot(x,y1,x,y2);hold onr0=abs(y2-sin(pi*x))<=0.02;yy=r0.*y1;xx=r0.*x;plot(xx(r0~=0),yy(r0~=0),'r.')直线与曲面相交x=-8:0.3:8;y=x;[X,Y]=meshgrid(x,y);Z=X.^2+Y.^2;mesh(X,Y,Z);hold onx=[-10 10];y=[-10 3];z=[30 35];line(x,y,z);r0=(abs(Y-y(1)-(y(2)-y(1))/(x(2)-x(1))*(X-x(1)))<=0.45)&... (abs(Z-z(1)-(z(2)-z(1))/(x(2)-x(1))*(X-x(1)))<0.45)&... (abs(Y-y(1)-(y(2)-y(1))/(z(2)-z(1))*(Z-z(1)))<=0.45);zz=r0.*Z;yy=r0.*Y;xx=r0.*X;plot3(xx(r0~=0),yy(r0~=0),zz(r0~=0),'r*')平面与曲面相交x=-8:0.1:8;y=x;[X,Y]=meshgrid(x,y);Z1=2*ones(size(X));Z2=X.^2-Y.^2;mesh(X,Y,Z1);hold onmesh(X,Y,Z2);r0=(abs(Z1-Z2)<=.65);zz=r0.*Z1;yy=r0.*Y;xx=r0.*X;plot3(xx(r0~=0),yy(r0~=0),zz(r0~=0),'k*')clcdisp('观察曲面后,按任意键画交线');pauseclfplot3(xx(r0~=0),yy(r0~=0),zz(r0~=0),'k*');%曲面与多个截平面相交y=-10:0.5:10;z=y;[Z,Y]=meshgrid(z,y);X=Z;X1=0*ones(size(Z));X2=3*ones(size(Z));X3=-3*ones(size(Z));Z4=(X.^2-Y.^2)/10;mesh(X1,Y,Z);hold onmesh(X2,Y,Z)mesh(X3,Y,Z);mesh(X,Y,Z4);r1=(abs(X1-X)<0.05);r2=(abs(X2-X)<0.05);r3=(abs(X3-X)<0.05);zz1=r1.*Z4;yy1=r1.*Y;xx1=r1.*X;zz2=r2.*Z4;yy2=r1.*Y;xx2=r1.*X;zz3=r3.*Z4;yy3=r1.*Y;xx3=r1.*X;plot3(xx1(r1~=0),yy1(r1~=0),zz1(r1~=0),'k*'); plot3(xx2(r2~=0),yy2(r2~=0),zz2(r2~=0),'k*'); plot3(xx3(r3~=0),yy3(r3~=0),zz3(r3~=0),'k*'); colormap(hsv)clc;disp('观察曲面后,按任意键画交线');hold off平面与曲面相交y=-8:0.4:8;z=y;[Z,Y]=meshgrid(z,y);X=Z;X1=zeros(size(Z));Z2=zeros(size(Z));Z3=(X.^2-Y.^2)/10;mesh(X1,Y,Z);hold onmesh(X,Y,Z2);mesh(X,Y,Z3);r1=(abs(X1-X)<0.05);r2=(abs(Z3-Z2)<0.05);r3=(abs(X1-X)<0.05)&(abs(Z-Z2)<=0.05);zz1=r1.*Z3;yy1=r1.*Y;xx1=r1.*X;zz2=r2.*Z3;yy2=r2.*Y;xx2=r2.*X;zz3=r3.*Z;yy1=r3.*Y;xx1=r3.*X1;plot3(xx1(r1~=0),yy1(r1~=0),zz1(r1~=0),'k*'); plot3(xx2(r2~=0),yy2(r2~=0),zz2(r2~=0),'k*'); plot3(xx3(r3~=0),yy3(r3~=0),zz3(r3~=0),'k*');colormap(hsv);。
离散信号MATLAB频谱分析程序
离散信号MATLAB频谱分析程序【ZZ】%FFT变换,获得采样数据基本信息,时域图,频域图%这里的向量都用行向量,假设被测变量是速度,单位为m/sclear;close all;load data.txt %通过仪器测量的原始数据,存储为data.txt中,附件中有一个模版(该信号极不规则) A=data; %将测量数据赋给A,此时A为N×2的数组x=A(:,1); %将A中的第一列赋值给x,形成时间序列x=x'; %将列向量变成行向量y=A(:,2); %将A中的第二列赋值给y,形成被测量序列y=y'; %将列向量变成行向量%显示数据基本信息fprintf('\n数据基本信息:\n')fprintf(' 采样点数= %7.0f \n',length(x)) %输出采样数据个数fprintf(' 采样时间= %7.3f s\n',max(x)-min(x)) %输出采样耗时fprintf(' 采样频率= %7.1f Hz\n',length(x)/(max(x)-min(x))) %输出采样频率fprintf(' 最小速度= %7.3f m/s\n',min(y)) %输出本次采样被测量最小值fprintf(' 平均速度= %7.3f m/s\n',mean(y)) %输出本次采样被测量平均值fprintf(' 速度中值= %7.3f m/s\n',median(y)) %输出本次采样被测量中值fprintf(' 最大速度= %7.3f m/s\n',max(y)) %输出本次采样被测量最大值fprintf(' 标准方差= %7.3f \n',std(y)) %输出本次采样数据标准差fprintf(' 协方差= %7.3f \n',cov(y)) %输出本次采样数据协方差fprintf(' 自相关系数= %7.3f \n\n',corrcoef(y)) %输出本次采样数据自相关系数%显示原始数据曲线图(时域)subplot(2,1,1);plot(x,y) %显示原始数据曲线图axis([min(x) max(x) 1.1*floor(min(y)) 1.1*ceil(max(y))]) %优化坐标,可有可无xlabel('时间(s)');ylabel('被测变量y');title('原始信号(时域)');grid on;%傅立叶变换y=y-mean(y); %消去直流分量,使频谱更能体现有效信息Fs=2000; %得到原始数据data.txt时,仪器的采样频率。
Matlab绘制频散曲线程序代码
Matlab绘制频散曲线程序代码function disper%绘制平板频散曲线%ticclc;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:ncp1=cp12(j,1);for i=1:modecpp=cp(:,i);ind=find(cpp==0);if ~isempty(ind)h(i,j)=plot((fd0(ind(end)+1:end))/d_Q235,cpp(ind(en d)+1:end),color);elseh(i,j)=plot(fd0/d_Q235,cpp,color);endhold onendif j==2xlabel('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',[0cp_max],'ytick',(0:cp_max/1e3)*1e3,...'yticklabel',0:cp_max/1e3)hSGroup = hggroup;%要在子对象构建之后构建,构建后立即使用,否则将失效hAGroup = hggroup;set(h(:,1),'parent',hSGroup)set(h(:,2),'parent',hAGroup)set(get(get(hSGroup,'Annotation'),'LegendInformatio n'),...'IconDisplayStyle','on');set(get(get(hAGroup,'Annotation'),'LegendInformatio n'),...'IconDisplayStyle','on');legend('对称模式','反对称模式')endend%群速度figure(2)for j=1:2if j==1cp=cps;color='b';cp=cpa;color='r';endfor i=1:modecpp=cp(:,i);ind=find(cpp==0);if ~isempty(ind)fd=fd0(ind(end)+1:end)';cpp=cpp(ind(end)+1:end);elsefd=fd0';enddcdf=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 onendif j==2xlabel('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',[05.5]*1e3,'ytick',(0:0.5:5.5)*1e3,'yticklabel',0:0.5 :5.5)grid onhSGroup = hggroup;%要在子对象构建之后构建,构建后立即使用,否则将失效hAGroup = hggroup;set(h(:,1),'parent',hSGroup)set(h(:,2),'parent',hAGroup)set(get(get(hSGroup,'Annotation'),'LegendInformatio n'),...'IconDisplayStyle','on');set(get(get(hAGroup,'Annotation'),'LegendInformatio n'),...'IconDisplayStyle','on');legend('对称模式','反对称模式')endendend%对称模式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<cp_max&&n<modecp1=cp2;cp2=cp1+deter;y1=smode(cp1,fd,cl,cs);y2=smode(cp2,fd,cl,cs);while y1*y2>0&&cp2<cp_maxcp1=cp2;cp2=cp1+deter;y1=smode(cp1,fd,cl,cs);y2=smode(cp2,fd,cl,cs);endif y1*y2<0n=n+1;cp0(n,:)=[cp1 cp2];if y1==0&&y2~=0n=n+1;cp0(n,:)=[cp1 cp1]; elseif y2==0&&y1~=0n=n+1;cp0(n,:)=[cp2 cp2]; cp2=cp2+1;elseif y1==0&&y2==0n=n+1;cp0(n,:)=[cp1 cp1]; n=n+1;cp0(n,:)=[cp2 cp2]; cp2=cp2+1;endendendendfunction fs=smode(cp,fd,cl,cs) p=abs(sqrt((cp/cs)^2-1));q=abs(sqrt((cp/cl)^2-1));if cp<=cs%p和q都是复数)^2*sinh(pi*fd/cp*p)*cosh(pi*fd/cp*q);elseif cp>cs&&cp<=cl%p是实数,q是复数fs=-4*p*q*sinh(pi*fd/cp*q)*cos(pi*fd/cp*p)+(p^2-1)^ 2*sin(pi*fd/cp*p)*cosh(pi*fd/cp*q);elsefs=4*p*q*sin(pi*fd/cp*q)*cos(pi*fd/cp*p)+(p^2-1)^2* sin(pi*fd/cp*p)*cos(pi*fd/cp*q);endendfunction cp=serfen(cp1,cp2,fd,cl,cs,precision) while cp2-cp1>precisiony1=smode(cp1,fd,cl,cs);y2=smode(cp2,fd,cl,cs);cp0=(cp1+cp2)/2;y0=smode(cp0,fd,cl,cs);if y1*y0<0cp2=cp0;elseif y2*y0<0cp1=cp0;elseif y0==0elseif y1==0cp2=cp1;breakelseif y2==0cp1=cp2;breakendendcp=(cp2+cp1)/2;end%反对称模式function [cp0 n]=aa(cp_min,cp_max,fd,cl,cs,mode) cp2=cp_min;deter=33;cp0=zeros(mode,2);n=0;while cp2<cp_max&&n<modecp1=cp2;cp2=cp1+deter;y1=amode(cp1,fd,cl,cs);y2=amode(cp2,fd,cl,cs);while y1*y2>0&&cp2<cp_maxcp1=cp2;cp2=cp1+deter;y1=amode(cp1,fd,cl,cs); y2=amode(cp2,fd,cl,cs); endif y1*y2<0n=n+1;cp0(n,:)=[cp1 cp2];elseif y1==0&&y2~=0n=n+1;cp0(n,:)=[cp1 cp1]; elseif y2==0&&y1~=0n=n+1;cp0(n,:)=[cp2 cp2]; cp2=cp2+1;elseif y1==0&&y2==0n=n+1;cp0(n,:)=[cp1 cp1]; n=n+1;cp0(n,:)=[cp2 cp2]; cp2=cp2+1;endendendendfunction fs=amode(cp,fd,cl,cs)p=abs(sqrt((cp/cs)^2-1));q=abs(sqrt((cp/cl)^2-1));if cp<=cs%p和q都是复数fs=-4*p*q*sinh(pi*fd/cp*p)*cosh(pi*fd/cp*q)+(-p^2-1 )^2*sinh(pi*fd/cp*q)*cosh(pi*fd/cp*p);elseif cp>cs&&cp<=cl%p是实数,q是复数fs=4*p*q*sin(pi*fd/cp*p)*cosh(pi*fd/cp*q)+(p^2-1)^2 *sinh(pi*fd/cp*q)*cos(pi*fd/cp*p);elsefs=4*p*q*sin(pi*fd/cp*p)*cos(pi*fd/cp*q)+(p^2-1)^2* sin(pi*fd/cp*q)*cos(pi*fd/cp*p);endendfunction cp=aerfen(cp1,cp2,fd,cl,cs,precision) while cp2-cp1>precisiony1=amode(cp1,fd,cl,cs);y2=amode(cp2,fd,cl,cs);cp0=(cp1+cp2)/2;y0=amode(cp0,fd,cl,cs); if y1*y0<0cp2=cp0;elseif y2*y0<0cp1=cp0;elseif y0==0breakelseif y1==0cp2=cp1;breakelseif y2==0cp1=cp2;breakendendcp=(cp2+cp1)/2;end。
Lamb波频散曲线快速计算与绘制
Lamb波频散曲线快速计算与绘制秦鹏【摘要】超声Lamb波已成为快速检测各种金属板材与薄壁管件健康质量的重要手段,但由于其传播过程中的频散和多模态特性使其在应用上受到了一定程度的限制.应用中若相关参数选择不当,会使得检测回波信号相互叠加而难以识别,快速精确的计算频散曲线则是正确选择参数的基础.基于此,在详细分析频散曲线特点的基础上,引入了曲线追踪法,并利用该方法完成了相应的软件设计,实现了频散曲线的快速绘制.该软件可用于各种材料的Lamb波频散曲线快速绘制,为检测中的Lamb波模态选择、发射频率等相关参数设置提供了可靠的理论依据.【期刊名称】《太原科技大学学报》【年(卷),期】2017(038)004【总页数】5页(P260-264)【关键词】Lamb波;频散曲线;相速度;曲线追踪【作者】秦鹏【作者单位】中北大学,太原 030051【正文语种】中文【中图分类】TG115.28+5;O242.7Lamb波为超声导波的一种,已广泛用于各中板材和管材的健康质量检测与监测以及材料特性分析[1]。
Lamb波在波导传播过程中,携带了与材料特性、波导厚度以及与传播频率有关的群速度、相速度、幅值衰减等相关信息,且由于其具有传播衰减小、传播距离远而受到广泛应用[2],但又由于其频散关系复杂、多模态等特点,使其应用受到了一定限制,所以在实际应用中,快速精确获取相应频散曲线是Lamb波模态正确选择、模态精确控制以及模态准确分离的基础,决定着超声Lamb波的检测效果与检测精度[3-5]。
许多国内外学者对频散曲线数值计算方法做了大量的研究,目前多以Rose等[6]提出Lamb波频散曲线的数值计算方法为基础来绘制,该方法对频厚积和相速度逐点代入,求解超越方程的过零点,然后利用二分法找出相应频厚积的解。
文献[7]对频散方程的定义域作分区讨论,避免了频散方程的复数运算。
本文通过分析Lamb波的频散方程、频散曲线的特性,优化算法,改进编程思想,引入曲线追踪法实现Lamb波频散曲线的快速计算与绘制。
MATLAB曲线绘制大全
一、二维数据曲线图1.1绘制单根二维曲线plot函数的基本调用格式为:plot(x,y)其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。
例1-1在0x2p区间内,绘制曲线y=2e-0.5xcos(4x)程序如下:x=0:pi/100:2*pi;y=2*exp(-0.5*x).*cos(4*pi*x);plot(x,y)例1-2绘制曲线。
程序如下:t=0:0.1:2*pi;x=t.*sin(3*t);y=t.*sin(t).*sin(t);plot(x,y);plot函数最简单的调用格式是只包含一个输入参数:plot(x)在这种情况下,当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图。
1.2绘制多根二维曲线1.plot函数的输入参数是矩阵形式(1)当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同颜色的曲线。
曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。
(2)当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。
(3)对只包含一个输入参数的plot函数,当输入参数是实矩阵时,则按列绘制每列元素值相对其下标的曲线,曲线条数等于输入参数矩阵的列数。
当输入参数是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。
2含多个输入参数的plot函数调用格式为:plot(x1,y1,x2,y2,,xn,yn)(1)当输入参数都为向量时,x1和yl,x2和y2,,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。
每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。
(2)当输入参数有矩阵形式时,配对的x,y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。
例1-3分析下列程序绘制的曲线。
x1=linspace(0,2*pi,100);x2=linspace(0,3*pi,100);x3=linspace(0,4*pi,100);y1=sin(x1);y2=1+sin(x2);y3=2+sin(x3);x=[x1;x2;x3]';y=[y1;y2;y3]';plot(x,y,x1,y1-1)3.具有两个纵坐标标度的图形在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。
用MATLAB进行系统频率特性曲线绘制-推荐下载
e)(1) wn 为固定值, z 变化时,运行下面的程序, wn=1,zet=[0:0.1:1,2,3,4,5]; hold on for i=1:length(zet) num=wn^2;den=[1,2*zet(i)*wn,wn^2]; bode(num,den); end grid on hold off 2) z 为固定值, wn 变化时,运行下面的程序 Wn=[0.1:0.1:1];zet=0.707; hold on for i=1:length(wn)
+
1)
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线产中0不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资2负料2,荷试而下卷且高总可中体保资配障料置各试时类卷,管调需路控要习试在题验最到;大位对限。设度在备内管进来路行确敷调保设整机过使组程其高1在中正资,常料要工试加况卷强下安看与全22过,22度并22工且22作尽22下可护都能1关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编试技5写、卷术重电保交要气护底设设装。备备置管4高调、动线中试电作敷资高气,设料中课并技3试资件且、术卷料中拒管试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
用MATLAB进行系统频率特性曲线绘制
目动控制原三课程验证性实验报告比较两图的区别与特点。
如果该系统变成^型系统,即G《)+ ',情况又发生怎么样的变s2(T s + 1)2化?—(一kV"),令u = 1,分别绘制k = 1,2,10时系统的Nyquist图并保持,比s u (s + 1)(s + 2)较分析系统开环增益k不同时,系统Nyquist图的差异,并得出结论。
令k = 1,分别绘制k=1,2,3,4时系统的Nyquist图并保持,比较分析u不同时,系统Nyquist图的差异,并得出结论。
e.二阶系统传递函数为G (s)= ----- w------ ,试用MATLAB绘制出不同z和w的伯德图。
s 2 + 2zw s + w 2 nn nf.系统的开环传递函数为G4)= ------ 35 ------- 求系统的幅值裕度和相角裕度,并求其闭环阶跃s3 + 2s2 + 3 s + 2响应。
g.系统的开环传递函数为G《)=( 吁+° ),求系统的幅值裕度和相角裕度。
(s + 1)(s 2+ s +9)4、实验方法、步骤:a)num=10,den=[1 2 10];w=0::100;axis([-1,,-2,2]);nyquist(num,den)b)num=;den=[1 2 1 ];figure(1);nyquist(num,den)c)k=1,T1=3,T2=2,T1>T2 num=4;den=[2 1 0];nyquist(den,num)num=3;den=[3 1 0];nyquist(den,num)k=1,T1=3,T2=2,T1>T2 num=[3 1];den=[2 1 0 0];nyquist(den,num))k=1,T1=2,T2=3,T1<T2 num=[2 1];den=[3 1 0 0];nyquist(den,num) d)(1)u=1,k=1 num=1;den=conv([1 0],conv([1 1],[1 2]));nyquist(den,num)u=1,k=2 num=2;den=conv([1 0],conv([1 1],[1 2]));nyquist(den,num) u=1,k=10 num=2;den=conv([1 0],conv([1 1],[1 2]));nyquist(den,num) (2)k=1,u=2num=2;den=conv([1 0 0],conv([1 1],[1 2]));nyquist(den,num) k=1,u=3num=2;den=conv([1 0 0 0],conv([1 1],[1 2]));nyquist(den,num)k=1,u=4 num=2;den=conv([1 0 0 0 0],conv([1 1],[1 2]));nyquist(den,num)k=1,T1=2,T2=3,T1<T2e)(1):为固定值,z变化时,运行下面的程序, wn=1,zet=[0::1,2,3,4,5];hold onfor i=1:length(zet)num=wn^2;den=[1,2*zet(i)*wn,wn^2];bode(num,den);endgrid onhold off2) z为固定值,:变化时,运行下面的程序 Wn=[::1];zet=;hold onfor i=1:length(wn)num=wn(i)八2;den=[1,2*zetwn(i),wn(i)八2];bode(num,den);endgrid on ,hold offf)G=tf,[1,2,3,2]);G_close=feedback(G,1);[Gm,Pm,Wcg,Wcp]=margin(G)step(G_close),grid ong) G=tf(100*conv([1,5],[1,5]),conv([1,1],[1,1,9]));[Gm,Pm,Wcg,Wcp]=margin(G) G_close=feedback(G,1);step(G_close),grid on 5、实验现象、实验数据记录:(a)系统的Nyquist 图-1“Real Axis 叱 1 -1.5-1-0.50.511.51.5Real AxisK=1, T 时的Nyquist 图0.5 0.4 0.3 0.2 0.1 0 -0.1 -0.2 -0.3 -0.4 -0.5-9-8-7-6-5-4 -3-2-1Real Axisk=1,T1=3,T2=2,T1>T2-0.8-16-14 -12 -10 -8 -6 -4 -2 0Real Axisk=1,T1=2,T2=3,T1<T2-3 -2500-2000 -1500 -1000 -500 0 500Real Axisu=1,k=2Real AxisX107(d) u=1,k=1Real AxisRnxa vran.oam —6、实验现象、实验数据的分析:1、从(a)可以得出结论,闭环系统有2个不稳定极点。
瑞利波频散曲线反演matlab程序
瑞利波频散曲线反演matlab程序瑞利波频散曲线反演是地震学中一种常用的方法,用于确定地下介质的速度结构。
MATLAB是一种强大的数学软件,可以用于编写瑞利波频散曲线反演的程序。
本文将介绍如何使用MATLAB编写瑞利波频散曲线反演程序。
首先,我们需要准备一些数据。
瑞利波频散曲线反演需要地震波数据和地震台站的位置信息。
地震波数据可以通过地震仪器记录得到,而地震台站的位置信息可以通过地震台网提供。
假设我们有N个地震台站,每个台站的位置信息可以表示为一个二维坐标(x, y)。
接下来,我们需要计算每个地震台站之间的距离。
可以使用欧氏距离公式来计算两个点之间的距离。
假设我们有两个地震台站A和B,它们的位置分别为(x1, y1)和(x2, y2),则它们之间的距离可以计算为:distance = sqrt((x2 - x1)^2 + (y2 - y1)^2)然后,我们需要计算每个地震台站之间的相对时间差。
假设地震波在地下传播的速度为v,地震台站A和B之间的距离为d,则地震波从A到B的传播时间可以计算为:time = d / v接下来,我们可以根据地震波数据和计算得到的时间差,绘制瑞利波频散曲线。
瑞利波频散曲线是地震波传播速度和频率之间的关系曲线。
我们可以使用MATLAB的绘图函数来实现这一步骤。
最后,我们可以使用瑞利波频散曲线反演方法来确定地下介质的速度结构。
瑞利波频散曲线反演方法是通过拟合实测的瑞利波频散曲线和理论计算的瑞利波频散曲线,来确定地下介质的速度结构。
可以使用MATLAB的优化函数来实现这一步骤。
综上所述,我们可以使用MATLAB编写瑞利波频散曲线反演程序。
首先,准备地震波数据和地震台站的位置信息。
然后,计算地震台站之间的距离和相对时间差。
接下来,绘制瑞利波频散曲线。
最后,使用瑞利波频散曲线反演方法确定地下介质的速度结构。
MATLAB提供了丰富的函数和工具箱,可以帮助我们完成这些步骤。
通过编写瑞利波频散曲线反演程序,我们可以更好地理解地下介质的速度结构,为地震学研究提供有力支持。
导波频散曲线代码
导波频散曲线代码function chkmem % CHKMEM % This utility measures the size of the largest contiguous blockofvirtual % memory available to MATLAB, then recommends solutions to increase its % size should it be smaller than typical. This is only for the diagnosis of % memory fragmentation problems just after MATLAB startup. % % The recommended solutions can help to reduce the occurence of "Outof Memory" % errors. See MEMORY function in MATLAB 7.6 and later. % % Example: % chkmem %MATLAB Memory Fragmentation Detection Utility % --------------------------------------------- % Measurementof largest block size: % Largest free block is 1157MB, which is close to typical (1200MB) but less than %best case (1500MB), therefore it's size **CAN BE INCREASED** and may reduce the % occurrence of "Out of Memory" errors if you are experiencing them. % % Possible software modules fragmentingMATLAB's memory space: % c:\winnt\system32\uxtheme.dll % % Recommendations to increase size oflargest block: % * The location of uxtheme.dll may be causing problems. Consider solution 1-1HE4G5, % which rebases a group of Windows DLLs. This has some known side effects which you %shouldconsider. If you choose to make the changes, restart MATLAB and run % this utility again. % * If the list of software modules above includes DLLs located in the MATLAB % installation directory, checkyour startup.mIf the list of software modules above includes DLLs from applications other than % Windowsor MATLAB, consider uninstalling the application if it is not essential, % then restart MATLAB and run thisutility again. A tool such as Process Explorer % can help identify the source and manufacturer of DLLsMATLAB is using. You could % also contact the software manufacturer to ask if the DLL can be safely rebased. % % 3GB switch status: % The MATLAB process limit has been detected as is3071MB, therefore the 3GB switch % in your system's boot.ini is SET. % %% Test platformif ~strcmp(computer,'PCWIN') % Check for 32-bit Windows error('This utility is supported on32-bit Windows only.'); else fprintf('\n'); fprintf('MATLAB Memory Fragmentation Detection Utility\n'); fprintf('---------------------------------------------\n'); str = evalc('feature(''dumpmem'')'); newlines=regexp(str,'\n'); memmap=cell(size(newlines,2)-2,4); % Preallocate %% Extract info about s/w modules for i=4:size(newlines,2)-5 memmap{i-3,1}=deblank(str(newlines(i-1)+1:newlines(i)-36)); memmap{i-3,2}=hex2dec(str(newlines(i)-35:newlines(i)-28));memmap{i-3,3}=hex2dec(str(newlines(i)-23:newlines(i)-16));memmap{i-3,4}=hex2dec(str(newlines(i)-11:newlines(i)-4)); end %% Analyze Largest Block fprintf('Measurement of largest block size:\n') free=cell2mat(memmap(:,4)); [larges。
Matlab信号处理——FFT变换后的幅频相频曲线
用matlab编程:构造一个信号函数*sin(2***)=+,用FFT变换后,x A pi f t phi做出其幅频及相位的曲线.1、流程图2、程序代码%用fft求幅频相频clc;%清空clear all;%清除所有变量close all;%关闭所有窗口A=10;%振幅fw=50;%固有频率phi=pi/3;%相位step=1000;t=0:1/step:10*pi;%时间ty=A*sin(2*pi*fw*t+phi);%正弦函数yf=step*(0:256)/512;%频率subplot(3,1,1);%三行一列第一幅图plot(t,y);%绘制图形xlabel('t/s’,'fontsize’,13);%横坐标显示t/s,字号13ylabel(’y','fontsize',13);%纵坐标显示y,字号13title(’正弦函数曲线','fontsize',13);%显示标题Y=fft(y,512);%对y进行傅里叶变换subplot(3,1,2);%三行一列第二幅图plot(f,abs(Y(1:257)));%绘制图形xlabel('f/Hz',’fontsize’,13);%横坐标显示f/Hz,字号13ylabel(’幅值','fontsize’,13);%纵坐标显示幅值,字号13title('幅频特性曲线','fontsize',13);%显示标题[value,index]=max(abs(Y));%将abs(Y)最大值点的横坐标、纵坐标分别赋给value和index text(f(index),value,sprintf('maxpiont=(%f,%f)’,f(index),value),'fontsize’,13);%显示最大值点坐标subplot(3,1,3);%三行一列第三幅图plot(f,angle(Y(1:257))*180/pi);%绘制图形xlabel('f/Hz',’fontsize',13);%横坐标显示f/Hz,字号13ylabel('相位/°’,’fontsize',13);%纵坐标显示相位/°,字号13title(’相位特性曲线’,’fontsize',13);%显示标题3、程序运行结果图1 N=9时fft结果4、困惑及自我理解为什么最大值的横坐标为50.781250,而不是50,是不是因为f=step*(0:256)/512并不能将所有的f列出,所以修改程序如下:%用fft求幅频相频clc;%清空clear all;%清除所有变量close all;%关闭所有窗口A=10;%振幅fw=50;%固有频率phi=pi/3;%相位step=1000;t=0:1/step:10*pi;%时间ty=A*sin(2*pi*fw*t+phi);%正弦函数yN=input(’请输入2的指数N=’);f=step*(0:2^(N—1))/2^N;%频率subplot(3,1,1);%三行一列第一幅图plot(t,y);%绘制图形xlabel('t/s’,’fontsize',13);%横坐标显示t/s,字号13ylabel('y',’fontsize’,13);%纵坐标显示y,字号13title(’正弦函数曲线’,’fontsize’,13);%显示标题Y=fft(y,2^N);%对y进行傅里叶变换subplot(3,1,2);%三行一列第二幅图plot(f,abs(Y(1:2^(N—1)+1)));%绘制图形xlabel(’f/Hz','fontsize',13);%横坐标显示f/Hz,字号13ylabel('幅值','fontsize’,13);%纵坐标显示幅值,字号13title('幅频特性曲线',’fontsize',13);%显示标题[value,index]=max(abs(Y));%将abs(Y)最大值点的横坐标、纵坐标分别赋给value和indextext(f(index),value,sprintf('maxpiont=(%f,%f)’,f(index),value),'fontsize',13);%显示最大值点坐标subplot(3,1,3);%三行一列第三幅图plot(f,angle(Y(1:2^(N—1)+1))*180/pi);%绘制图形xlabel(’f/Hz’,’fontsize',13);%横坐标显示f/Hz,字号13ylabel(’相位/°’,'fontsize’,13);%纵坐标显示相位/°,字号13title('相位特性曲线',’fontsize’,13);%显示标题当N=10时,结果如图2图2当N=12时,结果如图3图3当N=20时,结果如图4图4通过观察比较图1到图4,可以很明显的看到最大值点的横坐标越来越接近50,自然会想到当N趋于无穷时,那么横坐标的值就是50.由此给我们的启示是,在以后求fft时,尽量将N取大,尤其是噪声信号与有用信号的频率很接近时,这样能保证有更高的精度。
Matlab编程实现FFT变换及频谱分析的程序代码
Matlab编程实现FFT变换及频谱分析的程序代码内容1.用Matlab产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图2.进行FFT变换,显示各自频谱图,其中采样率,频率、数据长度自选3.做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱4.用IFFT傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图源程序%*************************************************************** **********%% FFT实践及频谱分析%%*************************************************************** **********%%*************************************************************** **********%%***************1.正弦波****************%fs=100;%设定采样频率N=128;n=0:N-1;t=n/fs;f0=10;%设定正弦信号频率%生成正弦信号x=sin(2*pi*f0*t);figure(1);subplot(231);plot(t,x);%作正弦信号的时域波形xlabel('t');ylabel('y');title('正弦信号y=2*pi*10t时域波形');grid;%进行FFT变换并做频谱图y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(1);subplot(232);plot(f,mag);%做频谱图axis([0,100,0,80]);xlabel('频率(Hz)');ylabel('幅值');title('正弦信号y=2*pi*10t幅频谱图N=128');grid;%求均方根谱sq=abs(y);figure(1);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('正弦信号y=2*pi*10t均方根谱');grid;%求功率谱power=sq.^2;figure(1);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('正弦信号y=2*pi*10t功率谱');grid;%求对数谱ln=log(sq);figure(1);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('正弦信号y=2*pi*10t对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(1);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的正弦信号波形');grid;%****************2.矩形波****************% fs=10;%设定采样频率t=-5:0.1:5;x=rectpuls(t,2);x=x(1:99);figure(2);subplot(231);plot(t(1:99),x);%作矩形波的时域波形xlabel('t');ylabel('y');title('矩形波时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(2);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('矩形波幅频谱图');grid;%求均方根谱sq=abs(y);figure(2);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('矩形波均方根谱');grid;%求功率谱power=sq.^2;figure(2);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('矩形波功率谱');grid;%求对数谱ln=log(sq);figure(2);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('矩形波对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(2);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的矩形波波形');grid;%****************3.白噪声****************% fs=10;%设定采样频率t=-5:0.1:5;x=zeros(1,100);x(50)=100000;figure(3);subplot(231);plot(t(1:100),x);%作白噪声的时域波形xlabel('t');ylabel('y');title('白噪声时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(3);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('白噪声幅频谱图');grid;%求均方根谱sq=abs(y);figure(3);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('白噪声均方根谱');grid;%求功率谱power=sq.^2;figure(3);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('白噪声功率谱');grid;%求对数谱ln=log(sq);figure(3);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('白噪声对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(3);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的白噪声波形'); grid;。
频散曲线matlab程序
频散曲线matlab程序
频散曲线是描述介质中电磁波传播特性的一种重要曲线,其形状和特征对于研究介质中的电磁波传播具有重要意义。
使用matlab 编程可以方便快捷地绘制出频散曲线,并直观地分析介质中的电磁波传播特性。
在绘制频散曲线时,需要计算介质中的电磁波的传播速度和传播常数,并结合Maxwell方程组和边界条件,得到频散曲线的方程式。
在绘制频散曲线时,可以通过调节介质的性质和参数,或者改变电磁波的频率和波长,来研究介质中电磁波的传播规律,进一步深化对电磁波的理解和应用。
- 1 -。
sh导波频散曲线代码
fprintf(' should consider. If you choose to make the changes, restart MATLAB and run\n');
fprintf('which is close to best case (1500MB), therefore\n cannot be improved.\n');
else
if largest >= 1.2e9
fprintf('which is close to typical (1200MB) but less than\n');
fprintf(' best case (1500MB), therefore it''s size **CAN BE INCREASED** and may reduce the\n');
fprintf(' occurrence of "Out of Memory" errors if you are experiencing them.\n');
% Windows or MATLAB, consider uninstalling the application if it is not essential,
% then restart MATLAB and run this utility again. A tool such as Process Explorer
频散曲线反演matlab程序
频散曲线反演matlab程序(原创版)目录一、引言二、频散曲线反演 matlab 程序概述三、频散曲线反演的应用四、实现步骤五、总结正文一、引言频散曲线反演是一种重要的信号处理技术,其主要目的是通过分析信号的频散特性,从而恢复信号的时空信息。
在实际应用中,频散曲线反演技术广泛应用于地震信号处理、无线通信等领域。
本文主要介绍一种基于Matlab 的频散曲线反演程序,并对其实现步骤进行详细说明。
二、频散曲线反演 matlab 程序概述Matlab 是一种广泛应用于科学计算和数据分析的编程语言,其强大的数值计算和数据处理功能为频散曲线反演提供了便利。
在 Matlab 中,可以通过编写自定义函数实现频散曲线反演。
该程序主要包括以下几个步骤:1.对输入数据进行预处理,包括数据滤波、去除噪声等操作;2.计算数据的频散矩阵;3.根据频散矩阵,绘制频散曲线;4.对频散曲线进行反演,恢复信号的时空信息。
三、频散曲线反演的应用频散曲线反演技术在多个领域有广泛的应用,例如:1.地震信号处理:在地震信号处理中,频散曲线反演可以帮助我们提取地震信号的纵波和横波分量,从而更好地分析地震的性质和原因;2.无线通信:在无线通信中,频散曲线反演可以用于信道估计、信号解调等环节,从而提高通信系统的性能。
四、实现步骤下面是基于 Matlab 的频散曲线反演程序的具体实现步骤:1.预处理数据:首先对输入数据进行预处理,包括去除噪声、滤波等操作。
这一步可以通过编写自定义函数实现。
2.计算频散矩阵:根据预处理后的数据,计算数据的频散矩阵。
这一步可以通过调用 Matlab 内置的 fft 函数实现。
3.绘制频散曲线:根据频散矩阵,绘制频散曲线。
这一步可以通过调用 Matlab 的 plot 函数实现。
4.反演信号:根据频散曲线,对信号进行反演。
这一步可以通过编写自定义函数实现,主要目的是恢复信号的时空信息。
五、总结本文介绍了一种基于 Matlab 的频散曲线反演程序,并对其实现步骤进行了详细说明。
matlab频率分布曲线
在MATLAB中绘制频率分布曲线,可以使用hist函数和bar函数来创建直方图,或者使用fft函数和plot函数来创建频谱图。
以下是使用hist函数和bar函数创建直方图的示例代码:
```matlab
生成随机数据
data = randn(1, 1000);
创建直方图
bins = 20; 直方图的柱子数量
x = -3:0.5:3; x轴范围
y = hist(data, bins); 计算每个区间的频率
bar(x, y); 绘制直方图
title('Frequency Distribution');
xlabel('Value');
ylabel('Frequency');
```
以下是使用fft函数和plot函数创建频谱图的示例代码:
```matlab
生成随机数据
data = randn(1, 1000);
计算FFT
fft_data = fft(data);
计算频率轴
N = length(data);
f = (0:N-1)*(1/N);
绘制频谱图
plot(f, abs(fft_data));
title('Spectrum');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
```
以上代码可以根据需要进行修改,以适应不同的情况和数据集。
Matlab编程实现FFT变换及频谱分析的程序代码
Matlab编程实现FFT变换及频谱分析的程序代码(喜欢进行电磁兼容仿真分析的朋友可以借用)2007-10-08 sysop 点击: 436Matlab编程实现FFT变换及频谱分析的程序代码(喜欢进行电磁兼容仿真分析的朋友可以借用)Matlab编程实现FFT变换及频谱分析的程序代码(喜欢进行电磁兼容仿真分析的朋友可以借用)内容1.用Matlab产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图2.进行FFT变换,显示各自频谱图,其中采样率,频率、数据长度自选3.做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱4.用IFFT傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图源程序%*************************************************************************%% FFT实践及频谱分析 %%*************************************************************************%%*************************************************************************%%***************1.正弦波****************%fs=100;%设定采样频率N=128;n=0:N-1;t=n/fs;f0=10;%设定正弦信号频率%生成正弦信号x=sin(2*pi*f0*t);figure(1);subplot(231);plot(t,x);%作正弦信号的时域波形xlabel('t');ylabel('y');title('正弦信号y=2*pi*10t时域波形');grid;%进行FFT变换并做频谱图y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(1);subplot(232);plot(f,mag);%做频谱图axis([0,100,0,80]);xlabel('频率(Hz)');ylabel('幅值');title('正弦信号y=2*pi*10t幅频谱图N=128'); grid;%求均方根谱sq=abs(y);figure(1);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('正弦信号y=2*pi*10t均方根谱'); grid;%求功率谱power=sq.^2;figure(1);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('正弦信号y=2*pi*10t功率谱');grid;%求对数谱ln=log(sq);figure(1);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('正弦信号y=2*pi*10t对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(1);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的正弦信号波形'); grid;%****************2.矩形波****************% fs=10;%设定采样频率t=-5:0.1:5;x=rectpuls(t,2);x=x(1:99);figure(2);subplot(231);plot(t(1:99),x);%作矩形波的时域波形xlabel('t');ylabel('y');title('矩形波时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(2);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('矩形波幅频谱图');grid;%求均方根谱sq=abs(y);figure(2);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('矩形波均方根谱');grid;%求功率谱power=sq.^2;figure(2);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('矩形波功率谱');grid;%求对数谱ln=log(sq);figure(2);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('矩形波对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(2);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的矩形波波形');grid;%****************3.白噪声****************%fs=10;%设定采样频率t=-5:0.1:5;x=zeros(1,100);x(50)=100000;figure(3);subplot(231);plot(t(1:100),x);%作白噪声的时域波形xlabel('t');ylabel('y');title('白噪声时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(3);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('白噪声幅频谱图');grid;%求均方根谱sq=abs(y);figure(3);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('白噪声均方根谱');grid;%求功率谱power=sq.^2;figure(3);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('白噪声功率谱');grid;%求对数谱ln=log(sq);figure(3);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('白噪声对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(3);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的白噪声波形');grid;本文责任编辑: sysop相关文章? 请教:目前可有哪些用于EMC仿真的软件 - 08-18 10:01 am - 点击: 2718 发表评论查看评论加入收藏 Email给朋友打印本文如果你想对该文章评分, 请先登陆, 如果你仍未注册,请点击注册链接注册成为本站会员. 平均得分 0, 共 0 人评分1 2 3 4 5 6 7 8 9 10。
imf 频率曲线 matlab
IMF频率曲线是指在信号处理领域中对于信号分解和频率分析的一种常用方法。
在实际应用中,往往需要通过Matlab等工具进行频率曲线的绘制和分析,以便更好地理解信号的频域特性和结构。
在使用Matlab进行IMF频率曲线绘制时,通常需要按照以下步骤进行操作:1. 数据准备首先需要准备好待分析的信号数据,可以是从实验中采集得到的实测数据,也可以是模拟信号经过采样得到的离散数据。
确保数据的质量和准确性对后续的分析至关重要。
2. 信号分解利用Matlab中提供的信号处理工具箱,可以使用经验模态分解(Empirical Mode Dposition,EMD)或小波变换等方法对信号进行分解,将信号分解为若干个固有模态函数(Intrinsic Mode Functions,IMF)。
这些IMF代表了不同频率范围内的信号成分。
3. 频率分析对分解得到的每个IMF进行频率分析,可以使用Matlab中的快速傅立叶变换(Fast Fourier Transform,FFT)等函数,将时域信号转换为频域信号。
根据FFT变换得到的频谱信息,可以绘制出IMF的频率曲线,以直观地展现信号在不同频率下的能量分布情况。
4. 曲线绘制使用Matlab中的绘图函数,如plot函数或stem函数,根据频率分析得到的结果绘制出IMF频率曲线。
通过合理的坐标轴设置和标注,可以清晰地展示出每个IMF在频率域上的特性,帮助分析人员理解信号的频域结构。
5. 结果分析根据绘制得到的IMF频率曲线,可以进行进一步的结果分析和解释。
可以观察不同IMF在频率上的分布情况,判断信号中的主要频率成分和能量分布规律,为后续的信号处理和特征提取提供参考依据。
IMF频率曲线的绘制和分析在信号处理和振动分析等领域具有重要的应用价值,可以帮助工程技术人员深入理解信号的频域特性,从而更好地进行信号处理、故障诊断和结构健康监测等工作。
利用Matlab 等工具进行频率曲线分析,既方便快捷又可靠准确,为工程领域的科研和实际工作提供了有力的支持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
function disper%绘制平板频散曲线%ticclc;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:ncp1=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:ncp1=cp12(j,1);cp2=cp12(j,2);cpa(i,j)=aerfen(cp1,cp2,fd,cl,cs,precision);endendh=zeros(mode,2);%相速度figure(1)for j=1:2if j==1cp=cps;color='b';elsecp=cpa;color='r';endfor i=1:modecpp=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);elseh(i,j)=plot(fd0/d_Q235,cpp,color);endhold onendif j==2xlabel('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 onhSGroup = 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('对称模式','反对称模式')endend%群速度figure(2)for j=1:2if j==1cp=cps;color='b';elsecp=cpa;color='r';endfor i=1:modecpp=cp(:,i);ind=find(cpp==0);if ~isempty(ind)fd=fd0(ind(end)+1:end)';cpp=cpp(ind(end)+1:end);elsefd=fd0';enddcdf=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 onendif j==2xlabel('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 onhSGroup = 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('对称模式','反对称模式')endend%tocend%对称模式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<cp_max&&n<modecp1=cp2;cp2=cp1+deter;y1=smode(cp1,fd,cl,cs);y2=smode(cp2,fd,cl,cs);while y1*y2>0&&cp2<cp_maxcp1=cp2;cp2=cp1+deter;y1=smode(cp1,fd,cl,cs);y2=smode(cp2,fd,cl,cs);endif y1*y2<0n=n+1;cp0(n,:)=[cp1 cp2];elseif y1==0&&y2~=0n=n+1;cp0(n,:)=[cp1 cp1];elseif y2==0&&y1~=0n=n+1;cp0(n,:)=[cp2 cp2];cp2=cp2+1;elseif y1==0&&y2==0n=n+1;cp0(n,:)=[cp1 cp1];n=n+1;cp0(n,:)=[cp2 cp2];cp2=cp2+1;endendendendfunction fs=smode(cp,fd,cl,cs)p=abs(sqrt((cp/cs)^2-1));q=abs(sqrt((cp/cl)^2-1));if cp<=cs%p和q都是复数fs=-4*p*q*sinh(pi*fd/cp*q)*cosh(pi*fd/cp*p)+(-p^2-1)^2*sinh(pi*fd/cp*p)*cosh(pi*fd/cp*q); elseif cp>cs&&cp<=cl%p是实数,q是复数fs=-4*p*q*sinh(pi*fd/cp*q)*cos(pi*fd/cp*p)+(p^2-1)^2*sin(pi*fd/cp*p)*cosh(pi*fd/cp*q); elsefs=4*p*q*sin(pi*fd/cp*q)*cos(pi*fd/cp*p)+(p^2-1)^2*sin(pi*fd/cp*p)*cos(pi*fd/cp*q);endendfunction cp=serfen(cp1,cp2,fd,cl,cs,precision)while cp2-cp1>precisiony1=smode(cp1,fd,cl,cs);y2=smode(cp2,fd,cl,cs);cp0=(cp1+cp2)/2;y0=smode(cp0,fd,cl,cs);if y1*y0<0cp2=cp0;elseif y2*y0<0cp1=cp0;elseif y0==0breakelseif y1==0cp2=cp1;breakelseif y2==0cp1=cp2;breakendendcp=(cp2+cp1)/2;end%反对称模式function [cp0 n]=aa(cp_min,cp_max,fd,cl,cs,mode)cp2=cp_min;deter=33;cp0=zeros(mode,2);n=0;while cp2<cp_max&&n<modecp1=cp2;cp2=cp1+deter;y1=amode(cp1,fd,cl,cs);y2=amode(cp2,fd,cl,cs);while y1*y2>0&&cp2<cp_maxcp1=cp2;cp2=cp1+deter;y1=amode(cp1,fd,cl,cs);y2=amode(cp2,fd,cl,cs);endif y1*y2<0n=n+1;cp0(n,:)=[cp1 cp2];elseif y1==0&&y2~=0n=n+1;cp0(n,:)=[cp1 cp1];elseif y2==0&&y1~=0n=n+1;cp0(n,:)=[cp2 cp2];cp2=cp2+1;elseif y1==0&&y2==0n=n+1;cp0(n,:)=[cp1 cp1];n=n+1;cp0(n,:)=[cp2 cp2];cp2=cp2+1;endendendendfunction fs=amode(cp,fd,cl,cs)p=abs(sqrt((cp/cs)^2-1));q=abs(sqrt((cp/cl)^2-1));if cp<=cs%p和q都是复数fs=-4*p*q*sinh(pi*fd/cp*p)*cosh(pi*fd/cp*q)+(-p^2-1)^2*sinh(pi*fd/cp*q)*cosh(pi*fd/cp*p); elseif cp>cs&&cp<=cl%p是实数,q是复数fs=4*p*q*sin(pi*fd/cp*p)*cosh(pi*fd/cp*q)+(p^2-1)^2*sinh(pi*fd/cp*q)*cos(pi*fd/cp*p); elsefs=4*p*q*sin(pi*fd/cp*p)*cos(pi*fd/cp*q)+(p^2-1)^2*sin(pi*fd/cp*q)*cos(pi*fd/cp*p); endendfunction cp=aerfen(cp1,cp2,fd,cl,cs,precision)while cp2-cp1>precisiony1=amode(cp1,fd,cl,cs);y2=amode(cp2,fd,cl,cs);cp0=(cp1+cp2)/2;y0=amode(cp0,fd,cl,cs);if y1*y0<0cp2=cp0;elseif y2*y0<0cp1=cp0;elseif y0==0breakelseif y1==0cp2=cp1;breakelseif y2==0cp1=cp2;breakendendcp=(cp2+cp1)/2;end。