fig9_9.m

来自「数字信号处理Matlab演示文件,其中各个文件加放置了不同的matlab子文件」· M 代码 · 共 67 行

M
67
字号
% 	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 + =
减小字号Ctrl + -
显示快捷键?