资源简介
ZFFT matlab实现,用于频谱细化以函数的方式实现,非常方便
代码片段和文件信息
function [f y] = zoomfft(x fi fa fs)
%ZOOMFFT
% x为采集的数据
% fi为分析的起始频率
% fa为分析的截止频率
% fs为采集数据的采样频率
% f为输出的频率序列
% y为输出的幅值序列(实数)
f0 = (fi + fa) / 2; %中心频率
N = length(x); %数据长度
r = 0:N-1;
b = 2*pi*f0.*r ./ fs;
x1 = x .* exp(-1j .* b); %移频将观察的频带中点移到零频
bw = fa - fi; %观察频带带宽
B = fir1(32 bw / fs); %低通滤波 截止频率为0.5bw Hamming window ,32 order
x2 = filter(B 1 x1); %通过低通滤波器后的信号输出
c = x2(1:floor(fs/bw):N); %对低通滤波后的信号以floor(fs/bw) D=floor(fs/bw)重新采样
N1 = length(c);
f = linspace(fi fa N1);
y = abs(fft(c)) ./ N1 * 2;
y = circshift(y [0 floor(N1/2)]); %将负半轴的幅值移过来
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 966 2017-12-02 17:06 zoomfft.m
评论
共有 条评论