|
发表于 2021-8-31 12:07:48
|
显示全部楼层
本帖最后由 BeiYangMan 于 2021-9-1 09:52 编辑
导入你的数据 x,在目录里定义两个函数文件dB10 和 hann
function [y]=dB10(x)
y=10*log10(abs(x));
function w = hann(n)
w = 0.5*(1 - cos(2*pi*(0:n-1)/n) );
注 : 自定义的hann是行向量,matlab自带hann是列向量,且有两个参数,周期和对称,如果用matlab,选周期参数。
然后执行下面语句。
不加窗 有时在低频会出现泄漏。
figure()
N=4096
vv(1,=x(3000:3000+N-1)';%扔掉初始不稳定的点。
Sv_win=(abs(fft(vv.*hann(N)))/sqrt(3/8)).^2/N;%加窗功率修正
semilogx([0:N/2-1]/N,dB10(Sv_win(1:N/2)),'b'),hold on,grid on
Sv=(abs(fft(vv))/(1)).^2/N;
semilogx([0:N/2-1]/N,dB10(Sv(1:N/2)),'r:'),hold on,grid on
%[bz,az]=tfdata(ntf_veri,'v');
bz=[1 -2 1];az=[1 0 0];
[hntf,w]=freqz(bz,az,2048);
semilogx(w/2/pi,dB20(hntf)+dB10((1)^2/12),'k');
h=legend('mesh1-1 win psd','mesh11 psd','S_{quan noise} * |ntf|^2',4)
title('mesh1-1 one side psd of two-sided psd')
注意:加窗不加窗的区别,加窗后功率谱密度要做一个修正。
另外sdm功率谱密度,看two-sided 谱的一侧就可以了,需要的话就乘以2,积分后反应真实功率。
对于sdm pll中的sdm,只需要看two-sided 谱的一侧,因为这个东西调制到clk上就是一侧的能量比值。简单的说一个sine wave,调制到vco的电压上,会在clk两侧都出现spur,计算spur只看一侧能量,一般接收机也只看一侧的能量。
A/2可以视作 Acos(wt)的复频谱的幅度 Acos() = A/2*exp(-)+A/2*exp(+),也就是复频谱幅度是实频谱的一半|F|=A/2。
因此对于sdmpll,看two-sided 频谱的一侧,不要乘以2。
|
-
|