📄 fig9_9.m
字号:
% Figures 9.9 & 9.10
% DFT of two complex freqencies
clf
clear
colordef(1,'black')
M = 64; % FFT size
bin = 0:1:M-1; % FFT bins
f = [ 10 16 ]; % bin frequencies of complex phasors
adB = [ 0 -40 ]; % power in dB of phasors
a = 10 .^ (adB/20); % magnitude of phasors
% complex input signal
x = a * exp ( j*2*pi*f'*bin/M );
min = -100; % bottom of plot
xmin = -100; % "log zero"
% M-point DFT
X = fft(x);
magx = 10*log10(X .* conj(X)/M/M);
for ii = 1:M;
if magx(ii) < min
magx(ii) = xmin;
end
end
% set up data plot
lo = line('Xdata',bin,'Ydata',magx,'Linestyle','o','Color','y','Erasemode','Xor');
ll = zeros(1,M);
for ii = 1:M
ll(ii) = line('Xdata',[ii-1 ii-1],'Ydata',[min magx(ii)],'Linestyle','-','Color','y','Erasemode','Xor');
end
%lh = line('Xdata',[0 M],'Ydata',[ 0 0 ],'Linestyle','-','Color','w','Erasemode','Xor');
xlabel('frequency bin'),ylabel('magnitude (dB)'),title('DFT')
axis( [ 0 M min 3 ]);
fprintf(1,'Figures 9.9 & 9.10: DFT of phasors at bins 10 and 16\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'*bin/M );
X = fft(x);
magx = 10*log10(X .* conj(X)/M/M);
for ii = 1:M
if magx(ii) < min
magx(ii) = xmin;
end
end
set(lo,'Xdata',bin,'Ydata',magx);
for jj=1:M
set(ll(jj),'Xdata',[jj-1 jj-1],'Ydata',[min magx(jj)]);
end
pause(1)
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -