📄 fig9_13b.m
字号:
% Figures 9.13(b)
% DFT of two complex freqencies
% with zero padding
% Hamming window
%
% BM July 1998
clf
clear
colordef(1,'black')
M = 64; % data size
NDFT = 512; % DFT size
bin = 0:1:NDFT-1; % FFT bins
f = [ 10 16 ]; % frequencies of complex phasors (relative to data size)
adB = [ 0 -40 ]; % power in dB of phasors
a = 10 .^ (adB/20); % magnitude of phasors
% complex input signal
tt = 0:1:M-1;
x = a * exp ( j*2*pi*f'*tt/M );
% window input signal
win = hamming(M)';
x = x .* win;
pmin = -100; % bottom of plot
xmin = -100; % "log zero"
% NDFT-point DFT
XM = fft(x,M);
X = fft(x,NDFT);
magxm = 10*log10(XM .* conj(XM)/M/M);
magx = 10*log10(X .* conj(X)/M/M);
for ii = 1:M;
if magxm(ii) < pmin
magxm(ii) = xmin;
end
end
for ii = 1:NDFT;
if magx(ii) < pmin
magx(ii) = xmin;
end
end
%binxm = tt*NDFT/M;
binxm =tt;
binx = bin*M/NDFT;
% set up data plot
lo = line('Xdata',binx,'Ydata',magx,'Linestyle','-','Color','r','Erasemode','Xor');
l1 = line('Xdata',binxm,'Ydata',magxm,'Linestyle','o','Color','y','Erasemode','Xor');
xlabel('frequency bin of 64-point transform'),ylabel('magnitude (dB)'),title('zero-padded DFT (Hamming window)')
axis( [ 0 M pmin 3 ]);
fprintf(1,'Figures 9.13: DFT of phasors at bins 10 and 16\n');
fprintf(1,' : 64-point DFT (circles); zero-padded to 512-point (continuous line)\n');
fprintf(1,' : Hamming window\n');
fprintf(1,' : Press return to increase both frequencies in\n');
fprintf(1,' : steps of 0.1 of a bin to 12 and 18 respectively\n');
pause
step = 0.0:0.1:2;
num = max(size(step));
% increment frequencies over one bin
for ii = 1:num
f = [ 10+step(ii) 16+step(ii) ];
x = a * exp ( j*2*pi*f'*tt/M );
x = x .* win;
X = fft(x,NDFT);
magx = 10*log10(X .* conj(X)/M/M);
for ii = 1:NDFT
if magx(ii) < pmin
magx(ii) = xmin;
end
end
XM = fft(x,M);
magxm = 10*log10(XM .* conj(XM)/M/M);
for ii = 1:M
if magxm(ii) < pmin
magxm(ii) = xmin;
end
end
set(lo,'Xdata',binx,'Ydata',magx);
set(l1,'Xdata',binxm,'Ydata',magxm);
pause(1)
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -