第3章 采样和量化
3-1
答:
输入:syms t w
Xf=fourier(5*cos(6*pi*t)+3*sin(8*pi*t))
输出:Xf=pi*(5*dirac(w+6*pi)+3*i*dirac(w+8*pi)-3*i*dirac(w-8*pi)+5*dirac(w-6*pi))
matlab 程序: t=0:0.02:8;
L=length(t);
xt=5*cos(6*pi*t)+3*sin(8*pi*t);
f1=fft(xt);
fs=10;Ts=1/fs;
t1=8:-0.02:0;
f=1./t1;
Pt=zeros(1,L);
for i=1:8:L
Pt(i)=1;
end
Xst=xt.*Pt;
f2=fft(Xst);
f3=fs*f1;
f4=ifft(f3);
subplot(2,2,1)
plot(f,f1)
axis([0 10 -1000 3000])
xlabel('f');ylabel('x(f)');
subplot(2,2,2)
plot(f,f2)
axis([0 10 -200 400])
xlabel('f');ylabel('Xs(f)');
subplot(2,2,3)
plot(f,f3)
axis([0 10 -2000 4000])
xlabel('f');ylabel('Xr(f)');
subplot(2,2,4)
plot(t,f4)
xlabel('t');ylabel('Xr(t)');
axis([0 6 -50 50])
3-2
答:matlab 程序: t=0:0.02:8;
L=length(t);
xt=5*cos(6*pi*t)+3*sin(8*pi*t);
f1=fft(xt);
fs=7;Ts=1/fs;
t1=8:-0.02:0;
f=1./t1;
Pt=zeros(1,L);
for i=1:8:L
Pt(i)=1;
end
Xst=xt.*Pt;
f2=fft(Xst);
f3=fs*f1;
f4=ifft(f3);
subplot(2,2,1)
plot(f,f1)
axis([0 10 -1000 3000])
xlabel('f');ylabel('x(f)');
subplot(2,2,2)
plot(f,f2)
axis([0 10 -200 400])
xlabel('f');ylabel('Xs(f)');
subplot(2,2,3)
plot(f,f3)
axis([0 10 -2000 4000])
xlabel('f');ylabel('Xr(f)');
subplot(2,2,4)
plot(t,f4)
xlabel('t');ylabel('Xr(t)');
axis([0 6 -50 50])
0510-10000100020003000fx(f)0510-2000200400fXs(f)0510-2000020004000fXr(f)0246-50050tXr(t)
3.5
信号
,
(a)信号的动态范围为
。
(b)信号的波峰因素为
。其中,S 为信号的功率
,所以
。
(c)信噪比
,以 dB 为单位,
比特时,计算得
当
3.11
k = 50;
% samples per lobe
nsamp = 50000;
% total frequency samples
snrdb = zeros(1,17);
% initialize memory
x = 4:20;
% vector for plotting
for m = 4:20
signal = 0; noise = 0; % initialize sum values
f_fold = k*m/2;
% folding frequency
for j = 1:f_fold
term = (sin(pi*j/k/2)/(pi*j/k/2))^4;
signal = signal+term;
end
for j = (f_fold+1):nsamp
0510-10000100020003000fx(f)0510-2000200400fXs(f)0510-2000020004000fXr(f)0246-50050tXr(t)()5sin(10)xtt25.84,49.93,98.09,194.42 dBSNR2cSFD22512.522mAS2*12.50.707110cF22()32bqcSNRF10lg()10lg(3)20lg()20lg2qcSNRFb4,8,16,32b25.84,49.93,98.09,194.42 dBSNR
term = (sin(pi*j/k/2)/(pi*j/k/2))^4;
noise = noise+term;
end
snrdb(m-3) = 10*log10(signal/noise);
end
plot(x,snrdb)
% plot results
xlabel('Samples per symbol')
ylabel('Signal-to-aliasing noise ratio')
三角脉冲波形的信号混叠信噪比
矩形脉冲波形的信号混叠信噪比
3-11
答:matlab程序: k=50;
nsamp=50000;
snrdb=zeros(1,17);
snrdb_triangle=zeros(1,17);
x=4:20;
for m=4:20
signal=0;noise=0;signal_triangle=0;noise_triangle=0;
f_fold=k*m/2;
for j=1:f_fold
term=(sin(pi*j/k)/(pi*j/k))^2;
term_triangle=(sin(pi*j/(2*k))/(pi*j/(2*k)))^4;
signal=signal+term;
signal_triangle=signal_triangle+term_triangle;
end
for j=(f_fold+1):nsamp
term=(sin(pi*j/k)/(pi*j/k))^2;
term_triangle=(sin(pi*j/(2*k))/(pi*j/(2*k)))^4;
noise=noise+term;
noise_triangle= noise_triangle+term_triangle;
end
snrdb(m-3)=10*log10(signal/noise);
snrdb_triangle(m-3)=10*log10(signal_triangle/noise_triangle);
end
plot(x,snrdb,x,snrdb_triangle,'r:');
xlabel('Samples per symbol');
ylabel('signal-to-aliasing noise ratio');
可见成形脉冲为三角脉冲时,效果更好一些。
3.12
k = 50;
% samples per lobe
nsamp = 50000;
% total frequency samples
snrdb = zeros(1,17);
% initialize memory
x = 4:20;
% vector for plotting
for m = 4:20
signal = 0; noise = 0; % initialize sum values
f_fold = k*m/2;
% folding frequency
for j = 1:f_fold
term = (cos(2*pi*j/k))^2/(pi^2)/((1-(4*j/k)^2))^2;
signal = signal+term;
end
for j = (f_fold+1):nsamp
term = (cos(2*pi*j/k))^2/(pi^2)/((1-(4*j/k)^2))^2;
noise = noise+term;
end
snrdb(m-3) = 10*log10(signal/noise);
end
plot(x,snrdb)
% plot results
xlabel('Samples per symbol')
ylabel('Signal-to-aliasing noise ratio')
% End of script file.
4681012141618201020304050Samples per symbolsignal-to-aliasing noise ratio
MSK 混叠信噪比
3-12
答:matlab程序: k=50;
矩形脉冲波形的信号混叠信噪比
nsamp=50000;
snrdb=zeros(1,17);
snrdb_triangle=zeros(1,17);
x=4:20;
for m=4:20
signal=0;noise=0;signal_triangle=0;noise_triangle=0;
f_fold=k*m/2;
for j=1:f_fold
term=(sin(pi*j/k)/(pi*j/k))^2;
term_triangle=(cos(2*pi*j/k))^2/(pi^2*(1-(4*j/k)^2)^2);;
signal=signal+term;
signal_triangle=signal_triangle+term_triangle;
end
for j=(f_fold+1):nsamp
term=(sin(pi*j/k)/(pi*j/k))^2;
term_triangle=(cos(2*pi*j/k))^2/(pi^2*(1-(4*j/k)^2)^2);;
noise=noise+term;
noise_triangle= noise_triangle+term_triangle;
end
snrdb(m-3)=10*log10(signal/noise);
snrdb_triangle(m-3)=10*log10(signal_triangle/noise_triangle);
end
plot(x,snrdb,x,snrdb_triangle,'r:');
xlabel('Samples per symbol');
ylabel('signal-to-aliasing noise ratio');
3.13
k = 50;
% samples per lobe
nsamp = 50000;
% total frequency samples
snrdb = zeros(1,17);
% initialize memory
x = 4:20;
% vector for plotting
for m = 4:20
signal = 0; noise = 0; % initialize sum values
468101214161820102030405060Samples per symbolsignal-to-aliasing noise ratio