|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
【求助】:用matlab行为级建了一个12位ADC的模型,输入正弦信号,加了随机的噪声,除此之外的非理想因素都没有加。现在写了一段计算DNL和INL的代码,但是输出的结果感觉不对,感觉DNL和INL都有问题(如下图),求助各位能不能帮忙看看代码哪里出了问题?(也可以加微信交流:smj13564680659)
- %输入重建好的码值code
- dPnts=length(code);
- code=floor(code)+1-min(code); % floor向下取整。使其在最小值为1,即将数据重新定位到从1开始。
- numLSB=2^numbit;
- count=zeros(1,max(code)); +10.count=zeros(1,numLSB);
- for i=1:dPnts
- count(code(i))=count(code(i))+1; %遍历输入数据 code,统计每个代码出现的频率
- end
- figure
- bar(count)
- a=count(1:(numLSB/2));
- b=count((numLSB/2+1):end);
- [count_max1,point_start]=max(a);
- [count_max2,point_end]=max(b);
- point_end=point_end+numLSB/2;
- count_del=count(point_start:point_end);
- dPnts_del=sum(count_del(1:end));
- for i=1:length(count_del)-1
- H(i)=-cos(pi*sum(count_del(1:(i+1)))/dPnts_del)-(-cos(pi*sum(count_del(1:i))/dPnts_del));
- DNL(i)= H(i)/mean(H)-1;
- end
- INL= cumsum(DNL);
- DNL_DEL=DNL(1:length(count_del)-1);
- INL_DEL=INL(1:length(count_del)-1);
- [DNL_max,DNL_max_point]=max(DNL_DEL);
- [DNL_min,DNL_min_point]=min(DNL_DEL);
- fprintf(' Minimum DNL : DNL(%6d) = %5.2f LSB\n',DNL_min_point,DNL_min);
- fprintf(' Maximum DNL : DNL(%6d) = %5.2f LSB\n',DNL_max_point,DNL_max);
- k_DNL = 1:length(count_del)-1;
复制代码
|
-
-
|