|
发表于 2014-8-24 15:58:51
|
显示全部楼层
回复 4# wjx197733
你好,请问用matlab仿真DNL和INL时,类似如下的代码,
clear
clf
format long e
load inl.txt -ascii;
mm=2^10;
x=round(inl);
b=sort(x);
k=zeros(mm,1);
for i=1:mm,
for j=1:length(b),
if (b(j)==i-1)
k(i)=k(i) + 1;
end
end
end
avg=(length(b)-k(1)-k(mm))/(mm-2);
k(1)=avg;
k(mm)=avg;
inl=zeros(mm-1,1);
for i=1:length(k),
dnl(i)=(k(i)-avg)/avg;
end
for i=2:length(dnl),
inl(1)=dnl(1);
inl(i)=dnl(i)+inl(i-1);
end
tt=0:mm-1;
ttx=0:mm-1;
subplot(2,1,1);plot(tt,dnl);
title('DNL OF ADC');
xlabel('decimal code');
ylabel('DNL(LSB)');
grid on;
subplot(2,1,2);plot(tt,inl);
xlabel('decimal code');
ylabel('DNL(LSB)');
title('INL OF ADC');
xlabel('decimal code');
ylabel('INL(LSB)');
grid on;
Max_dnl=max(dnl)
Min_dnl=min(dnl)
Max_inl=max(inl)
Min_inl=min(inl)
(转载本论坛)
inl.txt里是放数据的,那这些数据是从哪里得到的呢?
比如我有一个matlab simulink ADC的模型,这些数据是直接使用S&H后的一些模拟量,还是应该从AD完了再DA得到呢? |
|