查看: 4578|回复: 4|关注: 1

[我分享] 分享FFT频谱细化程序(处理单频点信号)

[复制链接]

论坛优秀回答者

中级

856 麦片

财富积分


5001500


53

主题

1715

帖子

154

最佳答案
  • 关注者: 45
发表于 2017-6-22 15:22:32 | 显示全部楼层 |阅读模式
function resultCorrect=spectrumcorrectfftftmethod(inputDate,fStart,fEnd,fDelt,windowType,fs)
%功能:采用FFT+FT法对加矩形窗和hanning窗做离散频谱校正;信号的模型为Acos(2*pi*f*t+pha),注意t从0开始
%输入:inputDate待分析数据,数据长度为偶数,统一为行向量;fDelt细化频率分辨率;fStart,fEnd细化的起始频率;windowType窗函数类型,1为矩形窗,2为汉宁(hanning)窗;fs采样频率
%输出:resultCorrect校正后的频率,幅值,相位结果

resultCorrect=zeros(1,3);   
N=length(inputDate);       %数据长度
if  mod(N,2)==1
    error('数据长度必须为偶数')
end
if  windowType==1          %时域加矩形窗
    cR=1;                   %恢复系数
end
if  windowType==2          %时域加汉宁窗复数谱
    w=hann(N,'periodic');     %要选择periodic,保证与理论推导公式一致
    inputDate=inputDate.*w';  
    cR=2;                   %恢复系数  
end
% %细化过程
f=fStart:fDelt:fEnd;   %细化频率
n=1:N;
fftDateReal(1,length(f))=0;
fftDateImag(1,length(f))=0;
fftDateMag(1,length(f))=0;
fftDateAngle(1,length(f))=0;
for k=1:length(f)
    fftDateReal(k)=2*sum(inputDate.*cos(2*pi*(n-1)*f(k)/fs))/N;   %细化实部
    fftDateImag(k)=-2*sum(inputDate.*sin(2*pi*(n-1)*f(k)/fs))/N;  %细化虚部
    fftDateMag(k)=cR*sqrt(fftDateReal(k)^2+fftDateImag(k)^2);       %细化幅值谱
    fftDateAngle(k)=atan2(fftDateImag(k),fftDateReal(k));         %细化相位谱
end
    [maxMag,maxIndex]=max(fftDateMag);              %最大值对应幅值和位置
    resultCorrect(1,1)=f(maxIndex);                 %频率校正结果
    resultCorrect(1,2)=maxMag;                      %校正幅值结果
    resultCorrect(1,3)=fftDateAngle(maxIndex);      %校正相位结果   
end

FFT_FT离散频谱校正法参数估计精度.pdf

1.74 MB, 下载次数: 77

FFT谱连续细化分析的富里叶变换法.pdf

149.14 KB, 下载次数: 64

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
发表于 2017-7-5 22:11:33 | 显示全部楼层
太棒了,正在找这方面的资料,谢谢版主:lol

新手

7 麦片

财富积分


050


4

主题

34

帖子

0

最佳答案
发表于 2017-9-12 13:37:48 | 显示全部楼层
谢谢,很受用

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2019-8-6 10:55:27 | 显示全部楼层
非常好,学习了

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2019-8-20 14:49:11 | 显示全部楼层
非常好,学习了:lol:lol
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表