看看下面的程序,应该能帮上你的忙,已经通过调试:
Fs=256; %采样频率(Hz)
N=256; %采样点数
t=[0:1/Fs:N/Fs]; %采样时刻
S=2+3cos(2pi10t+pi30/180)+cos(2pi20t+pi90/180);
%我的调试信号,你自己是电流电压数据的话,最开始通过load指令载入就是
Y = fft(S,N); %做FFT变换
Ayy = abs(Y); %取模
Ayy=Ayy/(N/2); %换算成实际的幅度
Ayy(1)=Ayy(1)/2;
F=([1:N]-1)Fs/N; %换算成实际的频率值,Fn=(n-1)Fs/N
stem(F(1:N/2),Ayy(1:N/2)); %显示换算后的FFT模值结果
title('幅度-频率曲线图');
[y,fs,bits]=wavread('E:\MATLA\work\hnistwav');
sound(y,fs,bits); %回放该音频
Y=fft(y,4096); %进行傅立叶变换
subplot(2,1,1);
plot(y);
title('声音信号的波形');
subplot(2,1,2)
plot(abs(Y));
title('声音信号的频谱');
读取文件方法:
File=sprintf('%s%scsv',FilePath,charF);
s=importdata(File);
FilePath是文件路径字符串,charF为文件名字符串,s就位读取的数组
摘要:在MATLAB上,用傅立叶变换、自相关函数法以及最大熵估计法对一组离散的时间序列进行谱分析,并作出对应的频谱图,进行比较。关键词:离散时间序列,MATLAB,傅立叶变换,自相关函数法,最大熵估计(MESE) 1.概述:利用傅立叶变换,自相关函数法以及最大熵估计法对离散数据进行谱分析,找到数据的相关特性,并比较几种方法的特点。 2.谱分析原理: 时间序列是以时间为参考基准进行记录的,从直观图上无法获得数据内部的基本特性,通过谱分析的方法,将时域的数据转换到频域上去,通过分析频域的特征来获取数据的特性,从而达到分析数据的目的。 可以用傅立叶变换、自相关函数法、最大熵估计三种方法,将时域的数据转换到频域上进行分析。 利用MATLAB的相关工具来实现。 3.MATLAB实现:31数据说明:程序中所用的数据是由xn=A1sin(f12pin)+A2sin(f22pin)+e (e为白噪声)来产生的,其中:n=0:0001:1;A1=4;A2=4;f1=25;f2=50; 32MATLAB计算源程序 1)创建M文件,对离散时间序列用傅立叶变换和自相关法进行谱分析,代码如下: function FXi(data) figure(1)Fs=1000;subplot(3,1,1);t=0:1/Fs:1;plot(1000t(1:50),data(1:50));xlabel('time(mm)')title('一元时间序列直观图') Y=fft(data,512)Pyy2=Yconj(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=tFs/NFFT;P=10log10(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.结果与讨论: 由三种方法得到的频谱图表达的信息是类似的,明确的指出了离散数据中的信号特点,可以从谱分析图中得到数据的周期,与数据的原函数拟和的很好。但从图形的直观效果来看,用傅立叶转换的方法得出来的谱分析图对于数据特性的表达更明确,直观。
以上就是关于如何使用Matlab,对一组数据进行FFT变换,得到频谱分析,万分感谢。全部的内容,包括:如何使用Matlab,对一组数据进行FFT变换,得到频谱分析,万分感谢。、用MATLAB对语音信号做时域和频谱分析。要求有详细的程序,谢谢了。、怎样用MATLAB读取csv文件并频谱分析,具体程序代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)