FFT频谱测试法Matlab代码.docx

上传人:自*** 文档编号:126175068 上传时间:2020-03-22 格式:DOCX 页数:2 大小:32.62KB
返回 下载 相关 举报
FFT频谱测试法Matlab代码.docx_第1页
第1页 / 共2页
FFT频谱测试法Matlab代码.docx_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《FFT频谱测试法Matlab代码.docx》由会员分享,可在线阅读,更多相关《FFT频谱测试法Matlab代码.docx(2页珍藏版)》请在金锄头文库上搜索。

1、FFT频谱测试法Matlab代码如下: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;%标示样本矩阵的列vref=2;fclk=1e6;%A/D转换器的采样频率adc_bit=10;for i=1:1:numptdout(i)=(adc_data(i,d9)/2+adc_data(i,d8)/4+adc_data(i,d7)/8+adc_data(i,d6)/16+ad

2、c_data(i,d5)/32+adc_data(i,d4)/64+adc_data(i,d3)/128+adc_data(i,d2)/256+adc_data(i,d1)/512+adc_data(i,d0)/1024)*vref;%通过转换器出来的结果,恢复原来的波形 doute(i)=dout(i)-1;%将正弦波的共模电平偏置为0Vend figure(3)plot(doute);doutw=doute.*hanning(numpt);%加汉宁窗dout_spect=fft(doutw);%进行FFT变换,然后利用下面的算法求出SNR、SINAD、SFDRdout_dB=20*log1

3、0(abs(dout_spect);maxdB=max(dout_dB(1:numpt/2);x=(0:numpt/2-1.*fclk/numpt)/1000; % fclk/numpt为频谱分辨率,因为FFT频谱图关于中心对称所以只要分析一半的频谱图即可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的幅频特性曲线figur

4、e(2)plot(dout_dB);fin=find(dout_dB(1:numpt/2)=maxdB);%找出幅度最大的频率点span=max(round(numpt/200),5);spanh=2;spectp=(abs(dout_spect).*(abs(dout_spect);%幅度的平方Pdc=sum(spectp(1:span);Ps=sum(spectp(fin-span:fin+span);%信号的幅度平方和Fh=;Ph=;for har_num=1:10%寻找1至10次谐波分量 tone=rem(har_num*(fin-1)+1)/numpt,1); if tone0.5

5、tone=1-tone; end Fh=Fh tone; har_peak=max(spectp(round(tone*numpt)-spanh:round(tone*numpt)+spanh); har_bin=find(spectp(round(tone*numpt)-spanh:round(tone*numpt)+spanh)=har_peak); har_bin=har_bin+round(tone*numpt)-spanh-1; Ph=Ph sum(spectp(har_bin-1:har_bin+1); %计算谐波分量endPd=sum(Ph(2:5);Pn=sum(spectp(1:numpt/2)-Pdc-Ps-Pd;format;SNR=10*log10(Ps/Pn)SINAD=10*log10(Ps/(Pn+Pd)SFDR=10*log10(Ph(1)/max(Ph(2:10)ENOB=(SINAD-1.76)/6.02

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号