|
发表于 2015-1-14 15:02:51
|
显示全部楼层
其实就是计算fft的时候,matlab对数据存储的问题,你可以比较一下下面s0(理想正弦),s1(ADC 输出),sd(量化误差)。理论上s1=s0+sd,实际计算中s1有些数据丢失了。
clear;
afs = 1; % 1V full scale
fs = 1e6; % 1MHz sample rate
N = 2^10; % number of samples
cyc = 67;
fx = fs*cyc/N;
t = linspace(0,(N-1)/fs,N);
B = 10; % internal ADC resolution
delta = afs/2^B;
y0 = cos(2*pi*fx/fs*[0:N-1]);
y1 =round(y0/delta)*delta;
s0 = 20*log10(abs(fft(y0)/N/afs*2));
s1 = 20*log10(abs(fft(y1)/N/afs*2));
sd = 20*log10(abs(fft(y1-y0)/N/afs*2));
plot([s, s1, sd]) |
|