|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本人最近在用matlab设计一个原始2阶1位 SDM的模型,在输入小直流的情况下验证idle tone的问题,对量化器的输出做功率谱时发现加窗和不加窗区别很大,下面这张图是32768*16个点的FFT在不加窗和加beta=20的kaiser窗的FFT结果
红线对应不加窗,蓝线对应加窗。本人不太理解为什么不加窗的话在低频段功率谱就平了。本人一开始怀疑是10-2右侧的谱线泄露到低频段了,但是如果输入加入足够大幅度的正弦信号,加窗和不加窗的FFT结果又几乎不变,仿真的时候设定输入信号频率是整数周期采样,如下图。
这说明可能不是泄露过来了。本人做FFT的程序如下所示,请各位大佬看一下是否有什么问题。另外本人仿真小幅度DC输入下,功率谱似乎并不是完全的shaping形状,我尝试把第一张图x轴的log坐标变回等间隔坐标后,功率谱如下,可以看出在靠近fs/2的地方,功率谱又下去了,而对于大幅度正弦输入则没有这个问题,请问一下这是为什么呢?本人新手,求各位大佬解释,多谢!!!
%%%%%%%%%%%%%%%%%不加窗%%%%%%%%%%%%%
u = data(end - points + 1: end);
d_len = length(u);
if(en_dc > 0.5)
;
else
u = u - mean(u);
end
%% 补零操作
% uu = zeros(1, d_len*64);
% for ix = 1: d_len
%
% uu(ix) = u(ix);
% end
% u = uu;
% d_len = length(u);
%%
pow = fft(u).*conj(fft(u));
pow = pow/d_len;
d_len_half = floor(d_len/2);
pow = pow(1: d_len_half);
[size=13.3333px]%%%%%%%%%%%%%%%%%%加窗%%%%%%%%%%%%%
[size=13.3333px]
beta = 20; % kaiser窗系数
width_mainlobe = 7;
u = data(end - points + 1: end);
d_len = length(u);
u = u'.*(kaiser(d_len, beta)');
if(en_dc > 0.5)
;
else
u = u - mean(u);
end
%% 补零操作
% uu = zeros(1, d_len*64);
% for ix = 1: d_len
%
% uu(ix) = u(ix);
% end
% u = uu;
% d_len = length(u);
%%
pow = fft(u).*conj(fft(u));
pow = pow/d_len;
d_len_half = floor(d_len/2);
pow = pow(1: d_len_half);
|
|