请问高手们:如何用Matlab将离散时间序列分列成不同频率的谐波

来自:    更新日期:早些时候
怎么把周期性的离散数据分解成谐波(基波 3次谐波 5次谐波。。。。)用matlab~

采用FFT即可!
假设离散数据的在一维矩阵X
y=fft(x,N); %对信号进行快速Fourier变换
mag=abs(y); %求得Fourier变换后的振幅
矩阵mag的第一个数是0次谐波(直流分量),第4、6个数就是3次和5次谐波的幅值。

关键词:离散时间序列,MATLAB,傅立叶变换,自相关函数法,最大熵估计(MESE) 1.概述:利用傅立叶变换,自相关函数法以及最大熵估计法对离散数据进行谱分析,找到数据的相关特性,并比较几种方法的特点。 2.谱分析原理: 时间序列是以时间为参考基准进行记录的,从直观图上无法获得数据内部的基本特性,通过谱分析的方法,将时域的数据转换到频域上去,通过分析频域的特征来获取数据的特性,从而达到分析数据的目的。 可以用傅立叶变换、自相关函数法、最大熵估计三种方法,将时域的数据转换到频域上进行分析。 利用MATLAB的相关工具来实现。 3.MATLAB实现:3.1数据说明:程序中所用的数据是由xn=A1*sin(f1*2*pi*n)+A2*sin(f2*2*pi*n)+e (e为白噪声)来产生的,其中:n=0:0.001:1;A1=4;A2=4;f1=25;f2=50; 3.2MATLAB计算源程序 1)创建.M文件,对离散时间序列用傅立叶变换和自相关法进行谱分析,代码如下: function FXi(data) figure(1)Fs=1000;subplot(3,1,1);t=0:1/Fs:1;plot(1000*t(1:50),data(1:50));xlabel('time(mm)')title('一元时间序列直观图') Y=fft(data,512)Pyy2=Y.*conj(Y)/512;f2=1000*(0:256)/512;subplot(3,1,2);plot(f2,Pyy2(1:257));title('离散数据的傅立叶频谱图')xlabel('频率(Hz)') Fs=1000;NFFT=1024;Cx=xcorr(data,'unbiased');Cxk=fft(Cx,NFFT);Pxx=abs(Cxk);t=0:round(NFFT/2-1);k=t*Fs/NFFT;P=10*log10(Pxx(t+1));subplot(3,1,3);plot(k,P);title('谱估计的自相关函数法')xlabel('频率(Hz)') 2)创建.M文件,用最大熵法(MESE)对数据进行谱分析,代码如下: function MESE(data)figure(2);Fs=500;NFFT=1024;pyulear(data,20,NFFT,Fs); 3)载入数据(要具有一定的长度),则输出结果为:4.结果与讨论: 由三种方法得到的频谱图表达的信息是类似的,明确的指出了离散数据中的信号特点,可以从谱分析图中得到数据的周期,与数据的原函数拟和的很好。但从图形的直观效果来看,用傅立叶转换的方法得出来的谱分析图对于数据特性的表达更明确,直观。

相加后却还是和原来的离散时间序列不一样;你要用DFT的反变换公式,而不是将得到的幅度和相位来做。至少要除以N吧。


请问高手们:如何用Matlab将离散时间序列分列成不同频率的谐波视频

相关评论:
  • 13363715871matlab画图,想用鼠标移动到图上某个点 马上更新当前坐标,请问高手们怎 ...
    施贾独新建个ff.m文件:function ffx = 5:30;y = x.^2-40*x+400;plot(x, y);axis([5,30,-50,250]);tb = text;set(gcf, 'WindowButtonDownFcn', @callback);function callback(hObject, event) pos = get(hObject, 'CurrentPoint'); loc = get(gca, 'CurrentPoint'); set(...

  • 13363715871请问高手们:如何用Matlab将离散时间序列分列成不同频率的谐波_百度知 ...
    施贾独相加后却还是和原来的离散时间序列不一样;你要用DFT的反变换公式,而不是将得到的幅度和相位来做。至少要除以N吧。

  • 13363715871matlab求和。跪求高手
    施贾独1.应当是当前目录最优化,然后是path里面的目录。2.条件语句:仅仅是判断一次,如果条件满足,那么就执行到end之间的语句,否则直接跳到end之后执行。循环语句:就是运行若干次(这个可以是定次数,也可以是定条件),在次数或条件满足的情况,就一直执行至end之间的语句,否刚跳到end之后执行。例:条件...

  • 13363715871怎么用MATLAB不断读取一个不断变化的文件然后不断刷新画出图形_百度...
    施贾独不停的重绘应该是个办法。动画一般可以这样实现。实时重绘的命令是drawnow,不过运行效率不是太好,非要动画的话可以考虑。

  • 13363715871在matlab中怎样求矩阵中任意两点间的距离呢
    施贾独MATLAB函数子程序dijkstra.m为:function [L,Z]=dijkstra(W,S,T)用 Dijkstra 算法求最短路,W(I,J)是从点 I 到点 J 的距离, W(I,I)=0,I,J=1..n; 点 I 和点 J 无边直接相连时,W(I,J)=inf.L表示从始点 S 到终点 T 的最短距离, Z 表示点 S 到 T 的一条最短路径. 当不...

  • 13363715871请问高手们matlab中多个矩阵如何输出?
    施贾独function [g]=matrix(f) %f=5 a=2*pi*f;m=1;for n=1:3 g11(m)=1+n*a;g12(m)=2*n-a;g21(m)=sqrt(n);g22(m)=n\/2+a;m=m+1;end g1=[g11(1),g12(1);g21(1),g22(1)];g2=[g11(2),g12(2);g21(2),g22(2)];g3=[g11(3),g12(3);g21(3),g...

  • 13363715871matlab中如何让画椭圆(最小二乘法)
    施贾独x=[1.02 0.95 0.87 0.77 0.67 0.56 0.44 0.30 0.16 0.01];y=[0.39 0.32 0.27 0.22 0.18 .015 0.13 0.12 0.13 0.15];ezplot('2.2575*x^2-0.0602*x*y+5.7417*y^2-1.2803*x-7.4081*y+1=0');hold on plot(x,y,'r.')axis auto ...

  • 13363715871请教高手们一个MATLAB画图的取值范围问题
    施贾独使用,subplot(1,2,1),mesh(z), axis tight;subplot(1,2,2),surf(z),axis tight;

  • 13363715871matlab作业,高手们帮帮忙啊
    施贾独dv\/dt=P\/m-g-0.5*Cx*ro*v^2\/m dm\/dt=15 P=30000 v0=0 g=9.8 m0=900,m1=600 Cx=0.4 用simulink简单搭一个图就行了

  • 13363715871哪位高手有matlab弹道仿真程序
    施贾独第一个例子 导弹仿真Matlab源代码(missile simulation)http:\/\/www.matlabsky.com\/thread-284-1-1.html 第二例子 by dynamic see also http:\/\/www.matlabsky.com 2009.2.18 比例导引理想弹道仿真Matlab代码 给出了比例导引法的差分方程, 采用Matlab语言, 对比例导引法的导弹理想弹道进行了三维数据...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网