clear all N=2^16; L=8; fd=1000;
sko=65; sr=5;
t=0:1/fd:(N-1)*1/fd;
noise=sr+(sko*(randn(1,N)+j*randn(1,N))); smes=noise;
smes_s=reshape(smes,N/L,L); sp1=(abs(fft(smes_s)))/(N/L); sp=mean(sp1');
sp_noise=median(sp(1:end)); P_sp_noise=sqrt((N/L)*sp_noise^2)/1.25
P_vr_noise=std((noise))/sqrt(2)
Fpr=10; Fpod=12; [L1,f,a] = remezord([Fpr Fpod],[1 0],[0.1 0.000001],fd); h1 = remez(L1, f , a);
fop=155/fd; opora=exp(sqrt(-1)*2*pi*fop*(1:length(h1))); Hn=h1.*opora;
figure(1) plot(sp) hold on plot(abs(fft(Hn,length(sp))),'r') hold off
D=round(fd/(2*Fpod))-1; n_f=upfirdn(smes,Hn,1,D);
P_vr_noise_f=std(abs(n_f))
figure(2) hold on plot(abs(n_f),'r') plot(abs(noise(1:length(n_f))),'g') hold off
P_sp_noise - уровень шума, рассчитанная в спектральной области P_vr_noise - уровень шума, рассчитанного во временной области P_vr_noise_f - уровень шума после фильтрации и децимации и амплитудного детектора.
P_sp_noise и P_vr_noise вроде показывают одно и тоже значение, которое соответствует модельной величине sko. Но для того, чтобы соответствие получилось, пришлось в P_vr_noise ввести поправочный коэффициент 1.25. Вопрос - откуда он берется? После фильтрации, децимации и амплитудного детектирования получается P_vr_noise_f, но ее никак не получается пересчитать с учетом фильтра, децимации и детектирования к исходному P_vr_noise. Вопрос как это можно сделать (или наоборот - зная исходный P_vr_noise пересчитать, что получиться после фльтрации, децимации и детектирования)?
|