FFT
频谱测试?/p>
Matlab
代码如下?/p>
adc_data=[];%
采样得出的数据形成的矩阵
data_num=size(adc_data);
numpt=data_num(1,1);%
采样点的总数
no=1;vin=2;d9=3;d8=4;d7=5;d6=6;d5=7;d4=8;d3=9;d2=10;d1=11;d0=12;%
?/p>
?/p>
?/p>
本矩阵的?/p>
vref=2;
fclk=1e6
;%A/D
转换器的采样频率
adc_bit=10;
for i=1:1:numpt
dout(i)=(adc_data(i,d9)/2+adc_data(i,d8)/4+adc_data(i,d7)/8+adc_data(i,d6)/16+adc_
data(i,d5)/32+adc_data(i,d4)/64+adc_data(i,d3)/128+adc_data(i,d2)/256+adc_data(i,d
1)/512+adc_data(i,d0)/1024)*vref;%
通过转换器出来的结果,恢复原来的波形
doute(i)=dout(i)-1;%
将正弦波的共模电平偏置为
0V
end
figure(3)
plot(doute);
doutw=doute.*hanning(numpt)';%
加汉宁窗
dout_spect=fft(doutw);%
进行
FFT
变换?/p>
然后利用下面的算法求?/p>
SNR
?/p>
SINAD
?/p>
SFDR
dout_dB=20*log10(abs(dout_spect));
maxdB=max(dout_dB(1:numpt/2));
x=(
[0:numpt/2-1]
.*
fclk/numpt
)/1000;
%
fclk/numpt
为频谱分辨率?/p>
因为
FFT
频谱图关于中心对称所以只要分析一半的频谱图即?/p>
y1=dout_dB(1:numpt/2)-maxdB;
figure(1)
plot(x,y1);
axis([0,200,-120,5]);
grid off;
title('1024-Samples FFT spectrum');
xlabel('Frequency (kHz)');
ylabel('Magnitude (dB)');%
画出
FFT
的幅频特性曲?/p>