ADC matlab code问题
录入:edatop.com 阅读:
下面是我的ADC matlab code,但是不知道为什么频谱很奇怪。
clear;
fs=2*10^8;
time=2*10^(-6);
fin=490000;
N=1024;
Vdd=2;
Vref=0:Vdd/(N-1):Vdd;
t=0:1/fs:time-1/fs;
Vin=sin(2*pi*fin*t)+1;
i=time*fs;
LSB=Vdd/(N-1);
for x=1:1024
for y=1:400
if((Vin(y)>Vref(x)-LSB/2)&&(Vin(y)<Vref(x)+LSB/2))
Vout(y)=Vref(x);
end
end
end
figure
plot(t,Vin);
figure
plot(t,Vout);
window=hann(400);
output=window.'.*Vout;
vol=fft(output);
psd=(vol./(200)).^2;
freq=fs/800:fs/800:fs/2;
figure
semilogx(freq,10*log10(abs(psd)));
本来应该是在输入频率490KHz那个地方有一个peak的,但是现在低于这个频率的地方也很高的amplitude,不知道为什么,求高手解释一下,小弟怀疑是信号处理的code有问题,请指教!
clear;
fs=2*10^8;
time=2*10^(-6);
fin=490000;
N=1024;
Vdd=2;
Vref=0:Vdd/(N-1):Vdd;
t=0:1/fs:time-1/fs;
Vin=sin(2*pi*fin*t)+1;
i=time*fs;
LSB=Vdd/(N-1);
for x=1:1024
for y=1:400
if((Vin(y)>Vref(x)-LSB/2)&&(Vin(y)<Vref(x)+LSB/2))
Vout(y)=Vref(x);
end
end
end
figure
plot(t,Vin);
figure
plot(t,Vout);
window=hann(400);
output=window.'.*Vout;
vol=fft(output);
psd=(vol./(200)).^2;
freq=fs/800:fs/800:fs/2;
figure
semilogx(freq,10*log10(abs(psd)));
本来应该是在输入频率490KHz那个地方有一个peak的,但是现在低于这个频率的地方也很高的amplitude,不知道为什么,求高手解释一下,小弟怀疑是信号处理的code有问题,请指教!
你的bin分辨率够不够哟?采样点数是不是少了点
就是采样点太少了!您一句话我就搞定了!万分感谢啊!方便的话可否加个QQ?谢谢!
回个帖子,求点信元
申明:网友回复良莠不齐,仅供参考。如需专业解答,请学习本站推出的微波射频专业培训课程。
上一篇:量化噪声的问题
下一篇:电流求和带隙基准PSRR怎么提高