在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2485|回复: 4

[求助] MATLAB ADC 频谱分析问题

[复制链接]
发表于 2015-1-13 21:47:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
一段做ADC频谱分析的程序,fft的结果出现了-inf,请大家看一下程序有什么问题。
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);

y = afs*sin(2*pi*fx*t);

B = 10;                        % internal ADC resolution
delta = afs/2^B;
y = cos(2*pi*fx/fs*[0:N-1]);
%quantize samples to delta=1LSB
y=round(y/delta)*delta;
s = 20*log10(abs(fft(y)/N/afs*2));
s = s(1:N/2);  % drop redundant half

f = (0:length(s)-1) / N;  % frequency vector (normalized to fs)

figure(1);
plot(f,s);
grid on;
发表于 2015-1-14 03:57:47 | 显示全部楼层
出现inf是因为fft返回的结果里有很多0,为了避免对0求log,可以在中s = 20*log10(abs(fft(y)/N/afs*2));
加入一个无穷小量eps。也即写成 s = 20*log10( abs( fft( y ) / N / afs * 2  + eps ) );
 楼主| 发表于 2015-1-14 10:25:44 | 显示全部楼层
回复 2# quantus


    谢谢回复!
确实是fft结果中有很多0,通过加入eps可以防止出现-inf。
追问:但是按理说对正弦信号量化后做fft不应该出现0吧?
发表于 2015-1-14 14:23:29 | 显示全部楼层
量化时很多bin点上的值太小被round到0了,所以会出现fft返回0的情况
发表于 2016-9-6 13:36:59 | 显示全部楼层
sdfwesdf
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 12:26 , Processed in 0.031681 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表