前面有做过ADC性能测试,测试方式是先使用ADC采集一个单频信号,然后利用matlab进行性能分析。

下面把matlab分析的代码记录下来:

%The following program code plots the FFT spectrum of a desired test tone. Test tone based on coherent sampling criteria, and

%computes SNR, SINAD, THD and SFDR.

%This program is believed to be accurate and reliable. This program may get altered without prior notification.;

%fid=fopen('F:\pelican_ADC_test\vjtag_prj\data_analysis\single_tone.txt','r');

%numpt=input('Number of Points in FFT? ');

%fclk=input('Sampling Frequency (MHz)? ');

%numbit=input('ADC Resolution (bits)? ');

close all;

clear all;

numpt=;

fclk=/;

% fclk=//;

numbit=;

% a=textread('dds_data_out.txt','%s')';%以字符形式打开文件

% a=dlmread('sample_data.txt','%s')';%以字符形式打开文件

a=dlmread('sample_data.txt','%s')';%以字符形式打开文件

v1=a'; %16进制转化为10进制数,存储进v1矩阵

% for i = :numpt

% v1(i) = bitxor(v1(i),);

% end

%v1 is a column vector(:numpt), and count is its length

%v1=dlmread('F:\pelican_ADC_test\vjtag_prj\data_analysis\single_tone.txt','');

%fclose(fid);

%change v1 into a row vector

code=v1';

%Warning: ADC output may be clipping - reduce input amplitude

if (max(code)==2^numbit-1) | (min(code)==0)

disp('WARNING: ADC OUTPUT MAYBE CLIPPING - CHECK INPUT AMPLITUDE!');

end

figure;

plot(code);

title('TIME DOMAIN')

xlabel('SAMPLES');

ylabel('DIGITAL OUTPUT CODE');

Dout=code-(2^numbit-1)/2; %Re-center the digitized sinusoidal input

Voltage=Dout./((2^numbit-1)/2)*(0.5);

figure;

plot([1:numpt],Voltage);

Doutw=(Dout').*blackmanharris(numpt); %add Minimum -term Blackman-Harris window

Dout_spect=fft(Doutw);

Dout_dB=*log10(abs(Dout_spect));

figure;

maxdB=max(Dout_dB(:numpt/)); %numpt points FFT result in numpt/ points spectrum

%计算距离满量程的幅度差

max_voltage=max(Voltage);

delta_amplitude=*log10(max_voltage/0.5); %full scale voltage amplitude is .5v

plot([:numpt/-].*fclk/numpt,Dout_dB(:numpt/)-maxdB+delta_amplitude);

grid on;

title('SINGLE TONE FFT PLOT');

xlabel('ANALOG INPUT FREQUENCY (MHz)');

ylabel('AMPLITUDE (dBfs)');

a1=axis; axis([a1() a1() - a1()]);

fin=find(Dout_dB(:numpt/)==maxdB); %Find the signal bin (DC represents bin=)

DC_span=; %default DC leakage bins are bins

signal_span = ; %signal leakage bins are ± bins for minumun -term black-harris window

spanh=; %%default harmonic leakage bins are ± bins

spectP=(abs(Dout_spect)).*(abs(Dout_spect));

%Determine power level

Pdc=sum(spectP(:DC_span)); %Determine DC offset power level

Ps=sum(spectP(fin-signal_span:fin+signal_span)); %Determine signal power level

Fh=[];

%Vector storing frequency and power components of signal and harmonics

Ph=[]; %HD1=signal, HD2=2nd harmonic, HD3=3rd harmonic, etc.

%Find the harmonic frequencies/power within the FFT plot

for har_num=:

tone=rem((har_num*(fin- )+)/numpt,); %Note: tones > fSAMPLE are aliased back

if tone>0.5

tone=-tone;

end

Fh=[Fh tone];

%For this method to work properly, make sure that the folded back high order harmonics do not overlap with DC and signal

%components or lower order harmonics.

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- ; %make sure that the folded back high order harmonics do not overlap with DC and signal components or lower order harmonics

Ph=[Ph sum(spectP(har_bin-:har_bin+))];

end

Pd=sum(Ph(:)); %Total distortion power level

Pn=sum(spectP(:numpt/))-Pdc-Ps-Pd; %Extract noise power level

format;

A=(max(code)-min(code))/(^numbit) %Analog input amplitude in mV

AdB=*log10(A) %Analog input amplitude in dB

SNR=*log10(Ps/Pn) %SNR in dB

SINAD=*log10(Ps/(Pn+Pd)) %SINAD in dB

disp('THD - HD2 through HD9');

THD=*log10(Pd/Ph()) %THD in dB

SFDR=*log10(Ph()/max(Ph(:))) %SFDR in dB

disp('SIGNAL AND HARMONIC POWER (dB)');

HD=*log10(Ph(:)/Ph())

hold on;

plot(Fh()*fclk,-,'bo',Fh()*fclk,-,'bx',Fh()*fclk,-,'b+',Fh()*fclk,-,'b*',Fh()*fclk,-,'bs',Fh()*fclk,-,'bd',Fh()*fclk,-,'bv',Fh()*fclk,-,'b^');

legend('SIGNAL','HD2','HD3','HD4','HD5','HD6','HD7','HD8','HD9');

hold off;

输出结果

A =

0.5432

AdB =

-5.3006

SNR =

54.0005

SINAD =

53.4240

THD - HD2 through HD9

THD =

-62.4784

SFDR =

63.0618

SIGNAL AND HARMONIC POWER (dB)

HD =

-63.0618 -78.1190 -79.6691 -82.4058 -86.1153 -90.7795 -91.1868 -89.8460 -74.6853

会标记出谐波的位置。

如何加速MATLAB代码运行

学习笔记 V1.0 2015/4/17 如何加速MATLAB代码运行 概述 本文源于LDPCC的MATLAB代码,即.由于代码的问题,在信息位长度很长 ...

SVM实例及Matlab代码

******************************************************** ***数据集下载地址 :http://pan.baidu.com/s/1geb8CQf ...

测试C++代码与WebBrowser HTML的互动

testWebBrowserDlg.h // testWebBrowserDlg.h : 头文件 // #pragma once #include "explorer1.h" #i ...

多分类问题中,实现不同分类区域颜色填充的MATLAB代码(demo:Random Forest)

之前建立了一个SVM-based Ordinal regression模型,一种特殊的多分类模型,就想通过可视化的方式展示模型分类的效果,对各个分类区域用不同颜色表示.可是,也看了很多代码,但基本都是 ...

卷积相关公式的matlab代码

取半径=3 用matlab代码实现上式公式: length=3;for Ki = 1:length for Kj = 1:length for Kk = 1:length Ksigma(Ki,Kj,K ...

使用JUnit测试java代码

Junit 单元测试实验报告  一.实验环境 MyEclipse2014.Junit4.10 二.实验目的 学会单元测试,在MyEclipse中进行Junit测试 三.实验步骤 1.写出要测试的类 代 ...

JAVA调用matlab代码

做实验一直用的matlab代码,需要嵌入到java项目中,matlab代码拼拼凑凑不是很了解,投机取巧采用java调用matlab的方式解决. 1.    matlab版本:matlabR2014a ...

前端测试框架Jest系列教程 -- Asynchronous(测试异步代码)

写在前面: 在JavaScript代码中,异步运行是很常见的.当你有异步运行的代码时,Jest需要知道它测试的代码何时完成,然后才能继续进行另一个测试.Jest提供了几种方法来处理这个问题. 测试异步 ...

调试和运行matlab代码(源程序)的技巧和教程

转载请标明出处:专注matlab代码下载的网站http://www.downma.com/ 本文主要给大家分享使用matlab编写代码,完成课程设计.毕业设计或者研究项目时,matlab调试程序的技巧 ...

随机推荐

调试关于Hibernate的程序遇到的问题

最怕的就是初学一些东西,低级的错误犯了又犯,现在总结出来以便以后不要再犯类似的错误. 一.Hibernate的延迟加载机制 在用hibernate底层访问数据库的过程忽略了延迟加载机制导致 在访问时候 ...

Centos6.5更新e1000网卡驱动

导读 在工作过程中经常遇到linux的操作系统网络不正常的情况,以前没有注意到,今天查看系统日志发现原来是网络驱动的问题.索性直接更新系统,更新网卡 问题:linux系统经常出现断网的情况,重启之后系 ...

查看Linux硬件配置信息

在网上找了N久,发现了一篇不错的文档,转载一下: 1.查看机器所有硬件信息: dmidecode |more dmesg |more 这2个命令出来的信息都非常多,所以建议后面使用"|mor ...

Android中Universal Image Loader开源框架的简单使用

UIL (Universal Image Loader)aims to provide a powerful, flexible and highly customizable instrument ...

pollard_rho和Miller_Rabin

Miller_Rabin就是以概论大小来判断素数 可以判断2^63范围的数 pollard_rho推荐两个很好的博客来理解:整数分解费马方法以及Pollard rho和[ZZ]Pollard Rho算 ...

php正则表达式总结

<?php echo 'wj'; echo '
'; $file = '

移动150卡

adc信噪比matlab测试代码,ADC测试matlab代码相关推荐

  1. wnoise matlab,MATLAB中用wnoise函数测试去噪算法

    MATLAB中用wnoise函数测试去噪算法 sqrt_snr=3; init=231434; [x,xn]=wnoise(3,11,sqrt_snr,init); % WNOISE generate ...

  2. matlab编写转台程序,基于Matlab三轴惯导测试转台结构分析.doc

    基于Matlab三轴惯导测试转台结构分析 基于Matlab三轴惯导测试转台结构分析 摘 要:三轴惯导测试转台作为惯导测试设备,其精度直接影响惯导设备的精度,而中框回转精度在三轴精度相对较差.影响其中框 ...

  3. 【纯音听力测试】基于MATLAB的纯音听力测试系统

    1.软件版本 matlab2017b 2.系统原理 语音是人类进行交流沟通的最基本方式,而人类的耳朵则是接收语音信号的唯一器官,但是对于听力障碍患者来讲,由于无法正常接收来自他人的语音信号,其无法进行 ...

  4. 基于matlab测幅值,基于MATLAB的分析测试系统

    基于MATLAB的分析测试系统 来源:华强电子网 作者:华仔 浏览:663 时间:2016-08-10 14:18 标签: 摘要: 摘 要:介绍基于matlab的分析测试系统的结构,详细阐述了系统的工 ...

  5. matlab气压分层图像,基于MATLAB的微气压传感器测试系统的气压控制仿真.pdf

    基于MATLAB的微气压传感器测试系统的气压控制仿真.pdf No,5 第19卷第5期 传感技术学报 V01.19 CHINESE OF AND 2006年10月 JOURNALSENSORSACTU ...

  6. matlab创建符号常量出错,错误:代码中意外的符号/输入/字符串常量/数值常数/特殊...

    这些错误意味着您试图运行的R代码或源代码在语法上是不正确的.也就是说,你有一个错误. 若要修复此问题,请仔细阅读错误消息.错误消息中提供的代码显示了R认为问题所在的地方.在原始代码中找到这一行,并查找 ...

  7. bp神经网络matlab代码_基于Matlab的BP神经网络识别26个英文字母

    一.设计思想 字符识别在现代日常生活的应用越来越广泛,比如车辆牌照自动识别系统,手写识别系统,办公自动化等等.本文采用BP网络对26个英文字母进行识别.首先将待识别的26个字母中的每一个字母都通过长和 ...

  8. 彩色matlab代码拷贝到word研究,matlab编辑器合并_彩色MATLAB代码拷贝到WORD研究

    公众号:理念世界的影子 文不可无观点,观点不可无论据. 转载请注明出处 结果简单,重在过程 有时将彩色Matlab代码拷贝到Word中,可能出现彩色消失.中文乱码.没有行号.字体不佳等问题.已有的措施 ...

  9. SiamFC代码配置复现 matlab版本

    原创 SiamFC代码配置复现 2019-04-29 22:18:06 ZZXin_ 阅读数 1603更多 分类专栏: 深度学习 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议 ...

  10. 数学建模代码速成~赛前一个月~matlab~代码模板~吐血总结~三大模型代码(预测模型、优化模型、评价模型)

    目录 一.预测模型 1.BP神经网络预测 2.灰色预测 3.拟合插值预测(线性回归) 4.时间序列预测 5.马尔科夫链预测 6.微分方程预测 7.Logistic 模型 二.优化模型 1.规划模型(目 ...

最新文章

  1. linux 在某个core上的中断 affinity c语言函数,Linux中断处理体系结构
  2. dispatcherservlet发送2次请求_[Java] SpringMVC工作原理之一:DispatcherServlet
  3. 【python】简单记录
  4. php5.3 with-mysql centos_Centos编译搭建php7让php5.3和php7兼容共存教程
  5. 域名解析IP服务器地址
  6. Threejs javascript 3D建模 框架
  7. [转]刚成为程序员的你需要什么技能
  8. redis持久化方法
  9. kali工具中文手册_黑客系统指南-在安卓手机上安装kali分步教程
  10. ai的预览模式切换_ai模式切换快捷键是什么啊?ai模式切换方法
  11. 每一代内存的读写速度
  12. STM32八路ADC采用DMA方式
  13. win7不休眠方式设置
  14. 一种通用的Qt数据库接口操作方法
  15. 各国iPhone5系列最新裸机价格
  16. 计算机硬件系统一直延用,会计从业考试:会计电算化计算机硬件系统
  17. php表格调整行间距,excel如何调整行距
  18. damon ps2 android,DamonPS2模拟器
  19. 到处走走-成都+峨眉山557
  20. ##求助!Python编程从入门到实践 外星人飞船问题

热门文章

  1. dex2jar源码解析之总体介绍(一)
  2. Jieba词性对照表
  3. 虚拟机win10系统安装详细教程
  4. 计算机拆机主板6个螺丝,iphone6主板拆机图解
  5. java笔试试题含答案_Java笔试题带答案
  6. CPLEX:二次规划
  7. SQL存储过程和函数区别(超级简单,人人都可以看懂)
  8. Web开发者的简历 模板
  9. 力控批量建立数据库点参数操作
  10. 一个python的UG二次开发简单实例