| |
clear all;clc;close all;
order=5;
OSR=64;
opt=1;
H0_inf=1.5;
f0=0;
xLim=0.9;
nLev=2;
form='CIFB';
%NTF实现
NTF=synthesizeNTF(order,OSR,opt,H0_inf,f0);
%结构实现
[a,g,b,c]=realizeNTF(NTF,form);
g=0;
%实现ABCD及优化,现在的ABCDO为理想形式
ABCD=stuffABCD(a,g,b,c,form);
%正弦波形与FFT点数
N=2^16;
tone_bin=31;
%tone_bin为信号频率
fB=ceil(N/(2*OSR));
t=[0:N-1];
NBW=1.5/N;
u=0.5*(nLev-1)*sin(2*pi*tone_bin/N*t);
%优化过程及实现
[ABCDs,umax]=scaleABCD(ABCD,nLev,f0,xLim);
[as,gs,bs,cs]=mapABCD(ABCDs,form);
%ABCDs传输函数生成
[NTFs,STFs]=calculateTF(ABCDs,1);
plotPZ(NTFs);
figure();
f=linspace(0,0.5,1000);
z=exp(2i*pi*f);
magNTFs=dbv(evalTF(NTFs,z));
magSTFs=dbv(evalTF(STFs,z));
plot(f,magNTFs,'b',f,magSTFs,'m','Linewidth',1);
figure();
%simulate SNR
[snr_pred,amp]=predictSNR(NTFs,OSR);
[snrl,amp]=simulateSNR(ABCDs,OSR);
plot(amp,snr_pred,'b',amp,snrl,'gs');
grid on;
figureMagic([-120 0],10,2,[0 120],10,1);
s=sprintf('peak SNR=%4.1fdB\n',max(snrl));
text(-65,15,s);
figure();
%时域
[v,xn,xmax,y]=simulateDSM(u,ABCDs,nLev);
t=0:1250;
stairs(t,u(t+1),'r');
hold on;
stairs(t,v(t+1),'b');
axis([0 1250 -(nLev-1)*1.2 (nLev-1)*1.2]);
ylabel('u,v');
figure();
%FFT
spec=fft(v.*ds_hann(N))/(N*(nLev-1)/4);
snr=calculateSNR(spec(1:ceil(N/(2*OSR))+1),tone_bin);
Neff=(snr-1.76)/6.02;
NBW=1.5/N;
f=linspace(0,0.5,N/2);
Sqq=4*(evalTF(NTFs,exp(2i*pi*f))/(nLev-1)).^2/3;
plot(f,dbv(spec(1:N/2)),'b');
hold on;
grid on;
plot(f,dbp(Sqq*NBW),'m','Linewidth',1);
axis([0 0.5-2000]);
hold on;
grid on;
ylabel('dBFS/NBW');
s=sprintf('SNR=%4.1fdB\n',snr);
text(0.25,-90,s);
s=sprintf('NBW=%7.5f',NBW);
text(0.25,-110,s);