要求:用MATLAB编写程序并进行调试,画出波形图,频谱图等。把程序和图形拷贝到Word文档中,Word文档的文件名为班级_姓名_学号
复习要点:
1.掌握信号产生函数,利用fft(), abs(), angle()等函数分析信号的频谱。会利用plot(), stem(), freqz() 等函数绘制信号的波形图和频谱图。
2.利用filter求系统的响应。
3.掌握FIR,IIR滤波器的设计方法,会设计低通、高通、带通滤波器。
4.熟悉信号的调制与解调原理。
复习题:
1.设有连续信号
(1)若利用DFT计算该连续时间信号的频谱,采样频率至少应取多少?
奈奎斯特采样定理:18
(2)为区分上述的三个频率分量,至少应采集多少个样本?
方法一:采样点数N >= 采样频率(fs)/ 最小频率间隔(df)。本题中,最小频率间隔为 5k-3.5k= 1.5kHz,若取采样频率为 30k,则 N>=30/1.5=20点。
方法二:在最低采样频率情况下,取三个频率分量的 最大公因子作为其频域的分辨力
(3)以采样频率对信号采样, 画出信号的波形;
,用plot(t, xn)函数画图
fs=30*10^3;
Ts=1/fs;
t=0:1/fs:(N-1)/fs;
N=200;
n=0:N-1;
xn=cos(2*pi*3.5*10^3*n/fs)+cos(2*pi*5*10^3*n/fs)+cos(2*pi*9*10^3*n/fs);
XK=fft(xn,N);
magXK=abs(XK);
phaXK=angle(XK);
subplot(1,2,1);
plot(n,xn);
xlabel('n');
ylabel('xn');
title('xn N=200')
subplot(1,2,2);
k=0:N-1;
stem(k,magXK,'.');
xlabel('k');
ylabel('magXK');
title('magXK N=200');
(4)以采样频率对信号采样,选取合适的采样点数,利用DFT分析信号的频谱,并画出幅频特性。
在(3)中取M为适当的值得到时域序列xn,代入函数fft得离散频谱Xk=fft(xn);用stem或plot函数画出幅频特性图
(5)设计一个滤波器,滤除信号中频率为9KHz的分量;画出滤波器的幅频特性曲线。求出滤波器的输出信号的频谱。
思路及要点:
① 滤波器类型和指标的确定
因为要滤除9kHz分量,这是中的最高频率分量,故设计一个数字低通滤波器(以巴特沃斯型为例),确定相应通带和阻带指标。
例如要求:5kHz处衰减不大于1dB,9kHz处衰减不小于40dB,则可得:
② 先调用buttord()求阶数,再调用butter()获得“数字低通滤波器”的系统函数。
③ 调用freqz()获得滤波器M点频率响应,而且应该取与输入序列长度相等,方便处理:
④ 最后,求输出信号频谱,输出信号频谱=输入信号频谱×滤波器频率响应:
2.产生一个周期为0.001秒,幅值为±1的方波信号,画出信号的时域波形(画4个周期)
(1)该信号的谱线间隔是多少Hz? 频带宽度为多少Hz?
(2)若利用DFT计算该连续时间信号的频谱,采样频率至少应取多少?
(3)用MATLAB画出该信号的幅度频谱图;
(4)设计一个滤波器,滤除(滤出)该信号的基波分量;画出滤波器的频响特性;
(5)画出滤波器的输出信号的时域波形和频谱图。
(6)若要滤除(滤出)该信号的三次谐波,设计滤波器。
思路及要点:
首先确定时间向量t,根据题目要求,时间长度T应为0到0.004秒,设每个周期p个点,4个周期4p个点,故分辨率:。 设p=100,则t共有M=400个样值点:
(1)周期信号的频谱为离散的,谱线间隔等于基波频率,即,频带宽度为无穷大。
(2)考虑到信号的能量分布主要集中在较低频段以及实现开销,可以采取保留1至15次谐波方案,故可取=32kHz,以及更高的频率。
(3)调用fft()函数求xn的离散频谱,用plot()或stem()函数画出幅度谱。
(4)由题意(滤除)可知需设计一个 高通 滤波器(如果是要“滤出”,则设计成“低通”滤波器),指标自行确定
●比如:1kHz时衰减 不小于 40dB,2kHz时的衰减不大于1dB,于是可得:
滤波器的设计原理如前述低通滤波器,只是为’high’型。
●也可设计成FIR滤波器,调用fir1()函数B=fir1(N,Wn,‘high’);可取截止频率Wn=1.5kHz,N要取(高通、带阻滤波器)偶数。
注意:此方法一般需检验。先求所设计滤波器的频率响应,看能否满足要求,否则须要调整fir1()的参数重新设计,直到能满足要求为止。
(5)可采取调用filter()函数直接求响应yn,也可采用变换域间接方法求取,即先求得滤波器的有限点频率响应向量H,和已经求得的xn的频谱向量Xk相乘(注意:点数要相等)得输出序列的频谱Yk,再求Yk的离散反变换得到输出序列yn。由于可以调用fft()和ifft()函数,故速度较快。
频率响应求法、频谱图画法如前;反变换可调用ifft()函数:yn=ifft(Yk)。
yn=filter( B, A, xn );再求yn的DFT并画图也可。
(6)由题意(滤除)可知,需设计一个中心频率为3kHz的 带阻 滤波器(如果要“滤出”,则设计成带通滤波器),相应频率指标为向量。例如可提出:
在2.5kHz至3.5kHz频带(阻带)内的最小衰减为50dB;
在0至1.5kHz和4.5kHz至16kHz内的最大衰减为1dB。
于是有
滤波器求取方法如前。
也可设计成FIR滤波器:方法和第4小题一样
t=0:0.00001:0.00399;
xn=square(2*pi*1000*t);
subplot(4,2,1)
plot(t,xn);
title('•½²¨');
fs=32000;
N=400;
k=0:N-1;
n=0:N-1;
xk=fft(xn);
magxk=abs(xk);
phaxk=angle(xk);
subplot(4,2,2);
plot(k,abs(xk));
title('ÐźŕùƵ');
wr=1000*2/fs;
wp=2000*2/fs;
ar=40;
ap=1;
Nn=400;
[N,wn]=buttord(wp,wr,ap,ar);
[b,a]=butter(N,wn,'high');
[H,W]=freqz(b,a,400,fs);
subplot(4,2,3);
plot(W,abs(H));
xlabel('W');
ylabel('abs(H)');
title('Â˲¨Æ÷ƵÂÊÏìÓ¦');
yn=filter(b,a,xn);
subplot(4,2,4);
plot(t,yn);
subplot(4,2,5)
yk=fft(yn,Nn);
plot(abs(yk));
xlabel('W');
ylabel('abs(yk)');
title('•ùƵ');
subplot(4,2,6);
plot(angle(yk));
xlabel('W');
ylabel('angle(yk)');
title('ÏàÆµ');
fs=32000;
wp2=[0.01 15999]*2/fs;
wr2=[2500 3500]*2/fs;
ap2=1;
ar2=50;
N2=400;
[N2,wn2]=buttord(wp2,wr2,ap2,ar2);
[b2,a2]=butter(N2,wn2,'stop');
[H2,W2]=freqz(b2,a2,400,fs);
subplot(4,2,7);
plot(W2,abs(H2));
xlabel('W2');
ylabel('abs(H2)');
3.已知信号,采用幅度调制的方式将信号进行调制,要求载波频率为400Hz。
(1)简述抑制载波的幅度调制与解调的原理;
(2)选择合适的采样频率对信号采样得信号,画出两个周期内的波形;
(3)试画出调制信号的波形图和幅度频谱图。
(4)对y(t)进行解调:,设计一个Butter-Worth低通滤波器,要求从y1(t)中恢复出原连续时间信号x(t),确定滤波器的参数,画出滤波器的幅频特性曲线。
思路和要点:
(1)实验指导书P102,或“通信电路原理”相关内容。
(2)关键在于时间向量t的定义,采样频率的倒数为向量t的步长,范围为T为两个周期。将t代入得到序列xn,用plot()画图。
(3)关键还是时间向量t设定,由于载波的频率较高,故(2)中的t不宜再用。
(4)方法如前。
一、解答:
%--------------以下画信号的时域波形图-----------%
fs=30000;
Ts=1/fs;
t=0:1/fs:0.01;
xn1=cos(2*pi*3.5*1000*t)+cos(2*pi*5*1000*t)+cos(2*pi*9*1000*t);
figure(1)
plot(t,xn1)
title('原信号的时域波形图')
%----------------以下画信号的频谱图-------------%
N=400;
n=0:299;
xn2=cos(2*pi*3.5*1000*n/fs)+cos(2*pi*5*1000*n/fs)+cos(2*pi*9*1000*n/fs);
Xk=fftshift(1/N*abs(fft(xn2,512)));
k=0:511;
figure(2)
plot(-fs/2+fs/512*k,Xk)
title('原信号的频谱图 512点DFT')
%------------以下设计符合题意的低通滤波器---------%
wp=6000*2/fs;
ws=9000*2/fs;
Rp=3;Rs=40;Nn=128;
[M,wn]=buttord(wp,ws,Rp,Rs)
[b,a]=butter(M,wn)
figure(3)
freqz(b,a,Nn,fs)
title('低通滤波器的幅度频谱图')
%---------以下把信号通过低通滤波器进行滤波---------%
y=filter(b,a,xn1);
figure(4)
plot(t,y)
title('滤波后信号的时域波形图')
%-----------以下画滤波后信号的频谱图---------------%
N=400;
n=0:299;
Yk=fftshift(1/N*abs(fft(y,512)));
k=0:511;
figure(5)
plot(-fs/2+fs/512*k,Yk)
title('滤波后信号的频谱图 512点DFT')
二、解答
%------------画时域波形图、幅度频谱图------------%
fs=32000;
t=0:1/fs:0.00399;
x=square(2*pi*1000*t);
figure(1)
subplot(2,1,1)
plot(t,x)
title('方波信号时域波形 (4个周期)')
axis([0,0.004,-1.5 1.5])
N=128;
n=0:N-1;
xk=fftshift(abs(fft(x,256))/N);
k=0:255;
subplot(2,1,2)
plot(-fs/2+fs/256*k,xk)
title('方波信号幅度频谱图')
%------------设计滤波器滤除基波------------------%
wp1=2000*2/fs;
ws1=1000*2/fs;
Rp=1;
Rs=40;
Nn=400;
[M,wn]=buttord(wp1,ws1,Rp,Rs);
[b1,a1]=butter(M,wn,'high');
[H,W]=freqz(b1,a1,Nn,fs);
figure(2)
plot(W,abs(H));
title('高通滤波器幅度特性')
%----------滤波-------------%
y1=filter(b1,a1,x);
figure(3)
subplot(2,1,1)
plot(t,y1)
title('滤除基波后信号的时域波形')
yk1=fftshift(abs(fft(y1,256))/N);
k=0:255;
subplot(2,1,2)
plot(-fs/2+fs/256*k,yk1)
title('滤除基波后信号的幅度频谱图')
%---------设计滤波器滤除3次谐波--------%
wp2=[1000,5000]*2/fs;
ws2=[2000,4000]*2/fs;
Rp=1;
Rs=40;
Nn=400;
[M,wn]=buttord(wp2,ws2,Rp,Rs);
[b2,a2]=butter(M,wn,'stop');
[H,W]=freqz(b2,a2,Nn,fs);
figure(4)
plot(W,abs(H));
title('带阻滤波器幅度特性')
%-------------滤波------------------%
y2=filter(b2,a2,x);
figure(5)
subplot(2,1,1)
plot(t,y2)
title('滤除3次谐波后信号的时域波形')
yk2=fftshift(abs(fft(y2,256))/N);
k=0:255;
subplot(2,1,2)
plot(-fs/2+fs/256*k,yk2)
title('滤除3次谐波后信号的幅度频谱图')
三、解答
fs=1000;
t=0:1/fs:0.04;
x=cos(100*pi*t);
figure(1)
subplot(2,1,1)
plot(t,x)
title('原信号两个周期内的波形')
N1=500;
xk=fftshift(abs(fft(x,512))/N1);
k=0:511;
subplot(2,1,2)
plot(-fs/2+fs/512*k,xk)
title('原信号频谱')
fs=2000;
t=0:1/fs:0.04;
y=cos(100*pi*t).*cos(2*pi*400*t)
figure(2)
subplot(2,1,1)
plot(t,y)
title('已调信号时域波形')
N2=500;
yk=fftshift(abs(fft(y,512))/N2);
subplot(2,1,2)
plot(-fs/2+fs/512*k,yk)
title('已调信号频谱')
y1t=y.*cos(2*pi*400*t);
wp=50*2/fs;
ws=300*2/fs;
Rp=1;
Rs=40;
Nn=400;
[M,wn]=buttord(wp,ws,Rp,Rs);
[b,a]=butter(M,wn,'low');
[H,W]=freqz(b,a,Nn,fs);
figure(3)
plot(W,abs(H))
title('低通滤波器频率响应')
y2t=filter(b,a,y1t);
figure(4)
subplot(2,1,1)
plot(t,y2t)
title('解调出来信号的时域波形图')
N3=500;
y2k=fftshift(abs(fft(y2t,512))/N3);
subplot(2,1,2)
plot(-fs/2+fs/512*k,y2k)
title('解调出来信号的频谱')