📄 sdft.m
字号:
%----------------------------------------------
% 点数N和序列周期非整数倍关系时,的FFT
% 也就是说信号频率,不是分辨率的整数倍
%---------------------------------------------
clear all;
close all;
clc;
%----------------------------------------------
N=64;
Fs=8000;
f=1625+70;
t=1/Fs:1/Fs:1000/f;
s=sin(2*pi*f*t);
% s=awgn(s,0,'measured');
%----------普通的DFT---------------------------
s1=s(1:64);
Y=fft(s1,64);
Y1=20*log(abs(Y));
% Y1=Y1-min(Y1);
figure(1);
% subplot(211);
plot(Y1(1:32));
ylabel('20log(|X(f)|)(dB)');
title('FFT频率估计');
hold on;
%--------SDFT-----------------------------------
M=10; % 可修改
% l=0; % 可修改
larger=zeros(1,8);
for l=0:M-1
for n=1:64
s11(n)=s1(n)*exp(-i*2*pi*l*n/M/N);
end
Y=fft(s11,64);
Y11=20*log(abs(Y));
larger(l+1)=max(Y11(1:32));
end
for l=0:M-1
if larger(l+1)==max(larger)
k=l;
end
end
for n=1:64
s11(n)=s1(n)*exp(-i*2*pi*k*n/M/N);
end
Y=fft(s11,64);
Y11=20*log(abs(Y));
% Y11=Y11-min(Y11);
% subplot(212);
plot(Y11(1:32),'g');
ylabel('20log(|X(f)|)(dB)');
title('SDFT与FFT频率估计比较');
k
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -