芯正 2021-08-17 17:03 采纳率: 60%
浏览 192
已结题

关于ADC的 SNR,SINAD,ENOB,THD计算问题

描述:对ADC的数据FFT变换后,进行SNR,SINAD,ENOB,THD计算编程;
问题:在计算SNR时,对span这个计算的方式不明白(如下公式),存在如下问题;
span=max(round(N/200),5);N为数组长度
1、N/200表示什么意思;
2、span代表带宽,在round函数之后,为什么与5对比,取出来的span这个值是什么意思?
具体代码如下,谢谢!

%%%%%%%%%前面的代码已省略,是对输入数据的设置,比如len/fs等%%%%%%

x=hann(N);
for i=1:N;
    data_win(i)=x(i)*DOUT_sum_uni(i);
end
x1=norm(x,1);                                 %?????ó??
Dout_spect=fft(data_win,N)/(x1);  
%recalculate to dB
Dout_dB=20*log10(abs(Dout_spect));
%display the results in the frequency domain with FFT plot
figure;
maxdB=max(Dout_dB(2:N/2));
%%for TTIMD,use the following short routine,normalized to -6.5dB
%full scale.
plot([0:N/2-1].*(fs/N),Dout_dB(1:N/2)-maxdB);
grid on;
title('FFT PLOT');
xlabel('ANALOG INPUT FREQUENCY(KHz)');
ylabel('AMPLITUDE(dB)');
%-----------------------------------------------%
%calculate SNR,SINAD,ENOB,THD and SFDR values
%-----------------------------------------------%
%find the signal bin number, DC=bin 1
fin=find(Dout_dB(1:N/2)==maxdB);
%double to int
%Span of the input freq on each side
span=max(round(N/200),5);
%approximate search span for harmonics on each side
spanh=2;
%determine power spectrum
spectP=(abs(Dout_spect)).*(abs(Dout_spect));
%find DC offset power
Pdc=sum(spectP(1:span));


  • 写回答

1条回答 默认 最新

  • 大白123zz 2021-08-17 17:09
    关注

    N/200就是N/200,然后四舍五入,在和5比较,
    及N大于1000,带宽就是N/200,N小于1000,带宽就是5.最小带宽为5,最大不限制

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月26日
  • 已采纳回答 8月18日
  • 修改了问题 8月17日
  • 创建了问题 8月17日

悬赏问题

  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入