信号与系统课程设计报告
——频分复用通信系统的仿真设计
指导老师:XXX
小组成员:
摘要:
通过对信号与系统这门课程第八章通信系统学习,我们对频分复用(FDMA )技术产生了浓厚的兴趣,于是决定自己利用MATLAB 强大的仿真功能来对频分复用系统进行仿真。本文首先录制三段不同的语音信号。然后通过推导,确定合适的载波信号的频率,对信号进行调制,调制后整合到一个复用信号上。再在复用信号上加一个随机的高斯白噪声得到在信道中传输的信号。之后根据通过对复用信号的频谱分析,得出切比雪夫滤波器的各项参数,通过设计好的滤波器进行信号分离后分别根据载波信号进行解调,再通过一个低通滤波器,得到原始信号。通过此次对FDMA 的仿真,我们更清楚了解了频分复用的工作原理,以及AM 调制解调方法,和滤波器的设计方法。频分复用技术对与通信系统节省资源有着重要的意义。
关键词:
频分复用 MATLAB 高斯白噪声
引言:
在电话通信系统中,语音信号频谱在300—3400Hz 内,而一条干线的通信资源往往远大于传送一路语音信号所需的带宽。这时,如果用一条干线只传一路语音信号会使资源大大的浪费,所以常用的方法是“复用”,使一条干线上同时传输几路电话信号,提高资源利用率。
本文是基于MATLAB 的简单应用,首先录制三段不同的语音信号。然后选择合适的高频载波,对信号进行调制,调制后整合到一个复用信号上。确定合适的信噪比,在复用信号上加一个随机的高斯白噪声得到在信道中传输的信号。之后根据载波信号设计合适的带通滤波器将三种信号进行分离,信号分离后分别进行同步解调,再通过一个低通滤波器,得到通过频分复用系统传输后得到的各个信号,将得到的信号与原信号对比,要保证信号与原信号吻合较好。
正文:
一、 设计要求:
1、基本要求:
(1)使用MATLAB 软件画出采样后语音信号的时域波形和频谱图。
(2)选择合适的高频载波,对采样信号进行调制。
(3)使用MATLAB 软件画出复用信号的频谱图。
(4)设计合适的带通滤波器,并画出带通滤波器的频率响应。
(5)对滤波后的信号进行解调,画出解调后各路信号的频谱图。
(6)设计低通滤波器,画出低通滤波器的频率响应。恢复信号的时域波形和频谱图。
(7)播放恢复信号,并与原信号进行比较。
二、设计原理:
1、设计的理论依据:
(1)、根据设计要求分析系统功能,掌握设计中所需理论(采样频率、采样位数的概念,采样定理;信号的调制与解调方法;数字滤波器设计原理和方法)。
(2)、 熟悉MATLAB 的编程语言。
2、方案设计:
(1)、语音信号采集:使用MATLAB 的audiorecord 方法录制3段长5秒的声音信号(44.1khz 采样,16位,单声道),并将这三段信号保存。
(2)、声音信号的分析:使用MATLAB 中的wavread()函数读取录制的3段信号,直接画出其时域图,然后进行快速傅立叶变换后画出其频域图。
(3)、声音信号的调制:将3段语音信号利用AM 调制原理调制到不同频带上,然后相加得到复用信号。
(4)、加入高斯白噪声:使用MATLAB 中的awgn 函数得到一个高斯白噪声信号,然后加到复用信号上。
(5)、分离出三个信号:设计合适的带通滤波器,将复用信号分离为三个信号。
(6)、解调:根据调制时的载波信号,将分离后得到的三个信号进行解调。
(7)、低通滤波:设计合适的低通滤波器,对三个信号进行滤波。
(8)、播放滤波后信号:播放滤波后得到的三个信号,并与原信号进行比较
三、设计内容
频分复用系统的模型
1、原始信号的录制与作图
(1)、使用“audiorecord ”命令利用matlab 录制3段信号,44.1 kHz的采样频率,16 bit 量化,单声道,并分别保存为“sound1.wav ”, ”sound2.wav ”, ”sound3.wav ”。用“fft ”命令对声音信号做快速傅立叶转换,对频域上的信号进行分析、作图。
(2)、对信号的时域和频域分析
使用MATLAB 软件可以对采集的语音信号进行时域和频域分析。可以使用subplot (m,n,p )或者subplot (m n p)将多个图画到一个平面上的工具。其中,m 表示是图排成m 行,n 表示图排成n 列,也就是整个figure 中有n 个图是排成一行的,一共m 行,p 则是指要把曲线画到figure 中哪个图上。MATLAB 中绘图命令plot(x,y),其含义是以x 为横坐标,y 为纵坐标,绘制图形。可得到时域分析图
(3)、产生的原始声音信号的波形,以及其幅度、相位谱如下图所示:
2、复用信号的产生
(1)语音信号的调制即为频分复用的混频过程,该过程关键是对各路语音信号载波频率的选取。混频过程的时域表示式如
s (t ) =x (t ) ⋅cos(2πf 0t )
所示,为双边带信号(DSB ),它的带宽是基带信号带宽f H 的2倍,即调制后的带宽为:
B =2f H (1) 为了使各个信号不会相互干扰,各个载频的间隔既要大于调制后带宽B ,设各载波的频率间隔为f g ,由于f H =3. 4kHz ,所以
f g ≥B =2f H =2⨯3. 4kHz =6. 8kHz (2) 另外,在选取各路信号载波频率时,还需要考虑混叠频率f a 。所谓混叠频率,就是当利用一个抽样频率为f s 的离散时间系统进行信号处理时信号所允许的最高频率。任何大于f a 的分量都将重叠起来而不能恢复,并使正规频带内的信号也变得模糊起来。根据抽样定理可知: f a =1f s (3) 2
由于前面语音信号采样频率f s =44. 1kHz ,所以混叠频率: f a =11f s =⨯44. 1kHz =22. 05kHz (4) 22
综合上述考虑,由(2)式可取载波频率间隔f g 为7000Hz ,由(4)式可知最高载波频率要小于f a 为22050Hz ,如果本次设计取第1路语音信号的载波频率f c 1为4000Hz ,则第2路信号的载波频率f c 2为11000Hz ,第3路信号的载波频率f c 3为18000Hz 。同时满足最高载波频率f c 3
(2)、调制后的3个信号频谱如图:
将此三个信号相加后得到复用信号的频谱:
(3)、利用awgn 函数给复用信号加一个高斯白噪声
加入高斯白噪声后得到的信号为
:
3、滤波器的设计:
本次设计中有3路语音信号,所以在接收端要设计3个带通滤波器,为了达到较好的效果,将采用切比雪夫2型滤波器。使用MATLAB 设计切比雪夫2型滤波器只需要确定滤波器的4个参数即可设计出所需要的滤波器。这4个参数分别为:通带区最大衰减系数Rp 、阻带区最小衰减系数Rs 、通带边界频率归一化值Wp 和阻带边界频率归一化值Ws 。其中当Ws Wp 时,为高通滤波器;当Ws 和Wp 为二元矢量时,为带通或带阻滤波器。
本次设计中可取最大衰减系数Rp 为0.5dB ,阻带区最小衰减系数Rs 为
40dB 。3个带通滤波器分别要滤出3路语音信号,其通频带要依据先前选定的载波频率和采样频率而定,可以滤出上边频,也可以滤出下边频,在这里将滤出上边频。而在信号的调制设计时,所选择的3路语音信号的载波频率分别为4000Hz 、1100Hz 和18000Hz 。从上图可以得出,当语音信号的载波频率为4000Hz ,可取切比雪夫2型滤波器的通带边界频率为[4200 7500];滤波器的阻带边界频率为
[4100 7600]。设计的是带通滤波器,所以通带边界频率Wp 和阻带边界频率Ws 为二元矢量。信号的采样频率为44100Hz 时,可取通带的边界频率Wp1和阻带的边界频率Ws1分别为:
Wp1=[4200 7500]/22050
Ws1=[4100 7600]/22050
在确定了带通滤波器的4个参数后,使用MATLAB 软件中的cheb2ord 函数可以求出第一个滤波器的最小阶数n 和截止频率Wn (单位为弧度/秒) 。其该函数的调用形式为:
p, Ws, Rp, Rs) (5) [n,Wn]=cheb2ord(W
通过式(5)得到了滤波器的最小阶数n 和截止频率Wn 后,再调用MATLAB 软件中的cheby2函数,进一步求出滤波器传递函数的分子系数b 和滤波器传递函数的分母系数a 。该函数的调用形式为:
Rs, Wn) (6) [b,a]=cheby2(n,
通过式(6)所示的函数得到了滤波器的传递函数的分子系数b 和分母系数a ,最后通过MATLAB 软件中的filter 函数对信号进行滤波。该函数调用形式为:
(b,a, s) (7) y =filter
式中的s 为被滤波信号,y 为滤波后的信号。同样,可以设计出其它所需的两路带通滤波器和低通滤波器。
设计的滤波器如图所示:
4、解调恢复原信号:
(1)、将滤波后产生的3个信号通过解调,之后经过一个低通滤波器即可得到原信号:
四、心得体会
通过对解调后的信号和原信号对比,发现在MATLAB 上仿真FDMA 通信技术取得了较好的效果。录音的声音再经过调试和解调后的信号与原来相比较为接近。我觉得仿真的成功关键在于载波频率的选择以及带通和低通滤波器的参数设计。
仿真结果分析表明,信号在频分复用时还存在着频间干扰的问题,对此,采用了适当加大采样频率的方法,在较大程度上使该问题得以解决。至于完全消除频谱间的干扰,还有待进一步研究与完善。
五、结语:
本文详细记录了将3个信号录制,利用FDMA 技术调制到复用信号上,然后在复用信号上分离出原始信号的过程。文章通过详细的计算,推导出了载波信号合适的频率。通过不断的仿真实验,确定了高斯白噪声合适的信噪比。并且通过详细的分析计算,得出了切比雪夫滤波器的各项参数值。综上所述,设计出来的系统能较好的还原原信号。下一步工作可以考虑对图像信号进行FDMA 传输。 参考文献:
【1】《《信号与系统》计算机练习——利用MATLAB 》,刘树棠 译,西安交通大学出版社,2006
【2】《Signals and Systems》奥本海姆 著,电子工业出版社,2011
【3】《数学实验讲义》,电子科技大学数学科学学院,2010
附录:
%(1)获取录音文件
pause
fs=44100; %声音的采样频率为44.1khz
duration=5; %录音的时间
fprintf(' 按任意键开始录音1:\n');
pause;
fprintf(' 录音中„„\n');
sd1=audiorecorder(fs,16,1); %44.1kHz,16,单声道
recordblocking(sd1,duration); %5秒
fprintf(' 录音1完毕。\n');
y1=getaudiodata(sd1);
audiowrite('sound1.wav' ,y1,fs);
fs=44100; %声音的采样频率为44.1khz
fprintf(' 按任意键开始录音2:\n');
pause;
fprintf(' 录音中„„\n');
sd2=audiorecorder(fs,16,1); %44.1kHz,16,单声道
recordblocking(sd2,duration); %5秒
fprintf(' 录音2完毕。\n');
y2=getaudiodata(sd2);
audiowrite('sound2.wav' ,y2,fs);
fs=44100; %声音的采样频率为44.1khz
fprintf(' 按任意键开始录音3:\n');
pause;
fprintf(' 录音中„„\n');
sd3=audiorecorder(fs,16,1); %fs,16,单声道
recordblocking(sd3,duration); %5秒
fprintf(' 录音3完毕。\n');
y3=getaudiodata(sd3);
audiowrite('sound3.wav' ,y3,fs);
%(2)声音样本的时域和频域分析
fprintf(' 按任意键开始声音样本的时域分析:\n');
pause
fs=44100; %声音的采样频率为44.1Khz duration=5;
t=0:duration*fs-1; %总的采样数
[sd1,fs]=wavread('sound1.wav' ); %打开保存的录音文件
[sd2,fs]=wavread('sound2.wav' );
[sd3,fs]=wavread('sound3.wav' );
figure(1) %图一为三个声音样本的时域波形 subplot(311)
plot(t,sd1);xlabel(' 单位:s' );ylabel(' 幅度' );
title(' 三个声音样本的时域波形' );
subplot(312)
plot(t,sd2);xlabel(' 单位:s' );ylabel(' 幅度' );
subplot(313)
plot(t,sd3);xlabel(' 单位:s' );ylabel(' 幅度' );
fprintf(' 按任意键开始声音样本的频域分析:\n');
pause
figure(2) %图二为三个声音样本的频谱分析
subplot(311)
stem(t,abs(fft(sd1)),'.' ); %fft对声音信号进行快速傅里叶变换 xlabel(' 单位:Hz' );ylabel(' 幅度' );
title(' 三个声音样本的频谱分析' );
subplot(312)
stem(t,abs(fft(sd2)),'.' );xlabel(' 单位:Hz' );ylabel(' 幅度' );
subplot(313)
stem(t,abs(fft(sd3)),'.' );xlabel(' 单位:Hz' );ylabel(' 幅度' );
%(3)调制,将三个声音信号用高频载波进行调制
fprintf(' 按任意键开始信号的调制和复用信号频域分析:\n');
pause
x1=4*sd1'.*cos(2*pi*4000*t/fs);
x2=4*sd2'.*cos(2*pi*11000*t/fs);
x3=4*sd3'.*cos(2*pi*18000*t/fs);
s=x1+x2+x3;
figure(3)
stem(t,abs(fft(s)),'.' );xlabel(' 单位:Hz' );ylabel(' 幅度' );
title(' 复用信号的频谱分析' );
%(4)信号传输仿真设计
fprintf(' 按任意键开始信道仿真设计:\n'); %加入高斯白噪声
pause
ys=awgn(s,20);
figure(4)
stem(t,abs(fft(ys)),'.' );xlabel(' 单位:Hz' );ylabel(' 幅度' );
title(' 加入高斯白噪声后复用信号的频谱分析' );
%(5)带通滤波器的设计
fprintf(' 按任意键开始带通滤波器的设计:\n');
pause
Rp=0.5;
Rs=40;
Wp1=[4000 8000]/22050;
Ws1=[3800 8500]/22050;
[n1,Wn1]=cheb2ord(Wp1,Ws1,Rp,Rs);
[b1,a1]=cheby2(n1,Rs,Wn1);
[h1,w1]=freqz(b1,a1);
mag1=abs(h1);
db1=20*log10((mag1+eps)/max(mag1));
Wp2=[9000 13000]/22050;
Ws2=[8000 14000]/22050;
[n2,Wn2]=cheb2ord(Wp2,Ws2,Rp,Rs);
[b2,a2]=cheby2(n2,Rs,Wn2);
[h2,w2]=freqz(b2,a2);
mag2=abs(h2);
db2=20*log10((mag2+eps)/max(mag2));
Wp3=[14500 18500]/22050;
Ws3=[14000 19000]/22050;
[n3,Wn3]=cheb2ord(Wp3,Ws3,Rp,Rs);
[b3,a3]=cheby2(n3,Rs,Wn3);
[h3,w3]=freqz(b3,a3);
mag3=abs(h3);
db3=20*log10((mag3+eps)/max(mag3));
figure(5);
subplot(3,1,1);
plot(w1/pi,db1);axis([0 1 -50
20]);xlabel('w/pi');ylabel('20lg|H(ejw)|');
title(' 用切比雪夫2型设计三个带通滤波器' );
subplot(3,1,2);
plot(w2/pi,db2);axis([0 1 -50
20]);xlabel('w/pi');ylabel('20lg|H(ejw)|');
subplot(3,1,3);
plot(w3/pi,db3);axis([0 1 -50
20]);xlabel('w/pi');ylabel('20lg|H(ejw)|');
y1=filter(b1,a1,ys);
y2=filter(b2,a2,ys);
y3=filter(b3,a3,ys);
%(6)解调
fprintf(' 按任意键开始信号的解调和3路信号频域分析:\n'); pause
fs=44100;
y01=y1.*cos(2*pi*4000*t/fs);
y02=y2.*cos(2*pi*11000*t/fs);
y03=y3.*cos(2*pi*18000*t/fs);
figure(6)
subplot(311)
stem(t,abs(fft(y01)),'.' );xlabel(' 单位:Hz' );ylabel(' 幅度' ); title(' 解调后的3路信号各自的频谱图' );
subplot(312)
stem(t,abs(fft(y02)),'.' );xlabel(' 单位:Hz' );ylabel(' 幅度' ); subplot(313)
stem(t,abs(fft(y03)),'.' );xlabel(' 单位:Hz' );ylabel(' 幅度' ); %(7)低通滤波
fprintf(' 按任意键开始低通滤波器的设计:\n');
pause
Rp=0.5;
Rs=40;
Wp1=3400/22050;
Ws1=4000/22050;
[n1,Wn1]=cheb2ord(Wp1,Ws1,Rp,Rs);
[b1,a1]=cheby2(n1,Rs,Wn1);
[h1,w1]=freqz(b1,a1);
mag1=abs(h1);
db1=20*log10((mag1+eps)/max(mag1));
figure(7);
plot(w1/pi,db1);
axis([0 1 -50 20]);
xlabel('w/pi');
ylabel('20lg|H(ejw)|');
title(' 低通滤波器的频率响应' );
%(8)恢复信号的时域波形和频谱分析
fprintf(' 按任意键开始恢复信号以及3路信号时域分析:\n'); pause
yy1=filter(b1,a1,y01);
yy2=filter(b1,a1,y02);
yy3=filter(b1,a1,y03);
figure(8) %图七恢复信号的时域波形 subplot(311)
plot(t,yy1);xlabel(' 单位:s' );ylabel(' 幅度' );
title(' 恢复信号的时域波形' );
subplot(312)
plot(t,yy2);xlabel(' 单位:s' );ylabel(' 幅度' );
subplot(313)
plot(t,yy3);xlabel(' 单位:s' );ylabel(' 幅度' );
fprintf(' 按任意键开始3路信号频域分析:\n');
pause
figure(9) %图八恢复信号的频谱分析 subplot(311)
stem(t,abs(fft(yy1)));xlabel(' 单位:Hz' );ylabel(' 幅度' ); title(' 恢复信号的频谱分析' );
subplot(312)
stem(t,abs(fft(yy2)));xlabel(' 单位:Hz' );ylabel(' 幅度' ); subplot(313)
stem(t,abs(fft(yy3)));xlabel(' 单位:Hz' );ylabel(' 幅度' ); fprintf(' 放音中···\n');
audiowrite('sound1.wav' ,yy1,fs);
audiowrite('sound2.wav' ,yy2,fs);
audiowrite('sound3.wav' ,yy3,fs);
fprintf(' 放音完毕,仿真结束!\n');
信号与系统课程设计报告
——频分复用通信系统的仿真设计
指导老师:XXX
小组成员:
摘要:
通过对信号与系统这门课程第八章通信系统学习,我们对频分复用(FDMA )技术产生了浓厚的兴趣,于是决定自己利用MATLAB 强大的仿真功能来对频分复用系统进行仿真。本文首先录制三段不同的语音信号。然后通过推导,确定合适的载波信号的频率,对信号进行调制,调制后整合到一个复用信号上。再在复用信号上加一个随机的高斯白噪声得到在信道中传输的信号。之后根据通过对复用信号的频谱分析,得出切比雪夫滤波器的各项参数,通过设计好的滤波器进行信号分离后分别根据载波信号进行解调,再通过一个低通滤波器,得到原始信号。通过此次对FDMA 的仿真,我们更清楚了解了频分复用的工作原理,以及AM 调制解调方法,和滤波器的设计方法。频分复用技术对与通信系统节省资源有着重要的意义。
关键词:
频分复用 MATLAB 高斯白噪声
引言:
在电话通信系统中,语音信号频谱在300—3400Hz 内,而一条干线的通信资源往往远大于传送一路语音信号所需的带宽。这时,如果用一条干线只传一路语音信号会使资源大大的浪费,所以常用的方法是“复用”,使一条干线上同时传输几路电话信号,提高资源利用率。
本文是基于MATLAB 的简单应用,首先录制三段不同的语音信号。然后选择合适的高频载波,对信号进行调制,调制后整合到一个复用信号上。确定合适的信噪比,在复用信号上加一个随机的高斯白噪声得到在信道中传输的信号。之后根据载波信号设计合适的带通滤波器将三种信号进行分离,信号分离后分别进行同步解调,再通过一个低通滤波器,得到通过频分复用系统传输后得到的各个信号,将得到的信号与原信号对比,要保证信号与原信号吻合较好。
正文:
一、 设计要求:
1、基本要求:
(1)使用MATLAB 软件画出采样后语音信号的时域波形和频谱图。
(2)选择合适的高频载波,对采样信号进行调制。
(3)使用MATLAB 软件画出复用信号的频谱图。
(4)设计合适的带通滤波器,并画出带通滤波器的频率响应。
(5)对滤波后的信号进行解调,画出解调后各路信号的频谱图。
(6)设计低通滤波器,画出低通滤波器的频率响应。恢复信号的时域波形和频谱图。
(7)播放恢复信号,并与原信号进行比较。
二、设计原理:
1、设计的理论依据:
(1)、根据设计要求分析系统功能,掌握设计中所需理论(采样频率、采样位数的概念,采样定理;信号的调制与解调方法;数字滤波器设计原理和方法)。
(2)、 熟悉MATLAB 的编程语言。
2、方案设计:
(1)、语音信号采集:使用MATLAB 的audiorecord 方法录制3段长5秒的声音信号(44.1khz 采样,16位,单声道),并将这三段信号保存。
(2)、声音信号的分析:使用MATLAB 中的wavread()函数读取录制的3段信号,直接画出其时域图,然后进行快速傅立叶变换后画出其频域图。
(3)、声音信号的调制:将3段语音信号利用AM 调制原理调制到不同频带上,然后相加得到复用信号。
(4)、加入高斯白噪声:使用MATLAB 中的awgn 函数得到一个高斯白噪声信号,然后加到复用信号上。
(5)、分离出三个信号:设计合适的带通滤波器,将复用信号分离为三个信号。
(6)、解调:根据调制时的载波信号,将分离后得到的三个信号进行解调。
(7)、低通滤波:设计合适的低通滤波器,对三个信号进行滤波。
(8)、播放滤波后信号:播放滤波后得到的三个信号,并与原信号进行比较
三、设计内容
频分复用系统的模型
1、原始信号的录制与作图
(1)、使用“audiorecord ”命令利用matlab 录制3段信号,44.1 kHz的采样频率,16 bit 量化,单声道,并分别保存为“sound1.wav ”, ”sound2.wav ”, ”sound3.wav ”。用“fft ”命令对声音信号做快速傅立叶转换,对频域上的信号进行分析、作图。
(2)、对信号的时域和频域分析
使用MATLAB 软件可以对采集的语音信号进行时域和频域分析。可以使用subplot (m,n,p )或者subplot (m n p)将多个图画到一个平面上的工具。其中,m 表示是图排成m 行,n 表示图排成n 列,也就是整个figure 中有n 个图是排成一行的,一共m 行,p 则是指要把曲线画到figure 中哪个图上。MATLAB 中绘图命令plot(x,y),其含义是以x 为横坐标,y 为纵坐标,绘制图形。可得到时域分析图
(3)、产生的原始声音信号的波形,以及其幅度、相位谱如下图所示:
2、复用信号的产生
(1)语音信号的调制即为频分复用的混频过程,该过程关键是对各路语音信号载波频率的选取。混频过程的时域表示式如
s (t ) =x (t ) ⋅cos(2πf 0t )
所示,为双边带信号(DSB ),它的带宽是基带信号带宽f H 的2倍,即调制后的带宽为:
B =2f H (1) 为了使各个信号不会相互干扰,各个载频的间隔既要大于调制后带宽B ,设各载波的频率间隔为f g ,由于f H =3. 4kHz ,所以
f g ≥B =2f H =2⨯3. 4kHz =6. 8kHz (2) 另外,在选取各路信号载波频率时,还需要考虑混叠频率f a 。所谓混叠频率,就是当利用一个抽样频率为f s 的离散时间系统进行信号处理时信号所允许的最高频率。任何大于f a 的分量都将重叠起来而不能恢复,并使正规频带内的信号也变得模糊起来。根据抽样定理可知: f a =1f s (3) 2
由于前面语音信号采样频率f s =44. 1kHz ,所以混叠频率: f a =11f s =⨯44. 1kHz =22. 05kHz (4) 22
综合上述考虑,由(2)式可取载波频率间隔f g 为7000Hz ,由(4)式可知最高载波频率要小于f a 为22050Hz ,如果本次设计取第1路语音信号的载波频率f c 1为4000Hz ,则第2路信号的载波频率f c 2为11000Hz ,第3路信号的载波频率f c 3为18000Hz 。同时满足最高载波频率f c 3
(2)、调制后的3个信号频谱如图:
将此三个信号相加后得到复用信号的频谱:
(3)、利用awgn 函数给复用信号加一个高斯白噪声
加入高斯白噪声后得到的信号为
:
3、滤波器的设计:
本次设计中有3路语音信号,所以在接收端要设计3个带通滤波器,为了达到较好的效果,将采用切比雪夫2型滤波器。使用MATLAB 设计切比雪夫2型滤波器只需要确定滤波器的4个参数即可设计出所需要的滤波器。这4个参数分别为:通带区最大衰减系数Rp 、阻带区最小衰减系数Rs 、通带边界频率归一化值Wp 和阻带边界频率归一化值Ws 。其中当Ws Wp 时,为高通滤波器;当Ws 和Wp 为二元矢量时,为带通或带阻滤波器。
本次设计中可取最大衰减系数Rp 为0.5dB ,阻带区最小衰减系数Rs 为
40dB 。3个带通滤波器分别要滤出3路语音信号,其通频带要依据先前选定的载波频率和采样频率而定,可以滤出上边频,也可以滤出下边频,在这里将滤出上边频。而在信号的调制设计时,所选择的3路语音信号的载波频率分别为4000Hz 、1100Hz 和18000Hz 。从上图可以得出,当语音信号的载波频率为4000Hz ,可取切比雪夫2型滤波器的通带边界频率为[4200 7500];滤波器的阻带边界频率为
[4100 7600]。设计的是带通滤波器,所以通带边界频率Wp 和阻带边界频率Ws 为二元矢量。信号的采样频率为44100Hz 时,可取通带的边界频率Wp1和阻带的边界频率Ws1分别为:
Wp1=[4200 7500]/22050
Ws1=[4100 7600]/22050
在确定了带通滤波器的4个参数后,使用MATLAB 软件中的cheb2ord 函数可以求出第一个滤波器的最小阶数n 和截止频率Wn (单位为弧度/秒) 。其该函数的调用形式为:
p, Ws, Rp, Rs) (5) [n,Wn]=cheb2ord(W
通过式(5)得到了滤波器的最小阶数n 和截止频率Wn 后,再调用MATLAB 软件中的cheby2函数,进一步求出滤波器传递函数的分子系数b 和滤波器传递函数的分母系数a 。该函数的调用形式为:
Rs, Wn) (6) [b,a]=cheby2(n,
通过式(6)所示的函数得到了滤波器的传递函数的分子系数b 和分母系数a ,最后通过MATLAB 软件中的filter 函数对信号进行滤波。该函数调用形式为:
(b,a, s) (7) y =filter
式中的s 为被滤波信号,y 为滤波后的信号。同样,可以设计出其它所需的两路带通滤波器和低通滤波器。
设计的滤波器如图所示:
4、解调恢复原信号:
(1)、将滤波后产生的3个信号通过解调,之后经过一个低通滤波器即可得到原信号:
四、心得体会
通过对解调后的信号和原信号对比,发现在MATLAB 上仿真FDMA 通信技术取得了较好的效果。录音的声音再经过调试和解调后的信号与原来相比较为接近。我觉得仿真的成功关键在于载波频率的选择以及带通和低通滤波器的参数设计。
仿真结果分析表明,信号在频分复用时还存在着频间干扰的问题,对此,采用了适当加大采样频率的方法,在较大程度上使该问题得以解决。至于完全消除频谱间的干扰,还有待进一步研究与完善。
五、结语:
本文详细记录了将3个信号录制,利用FDMA 技术调制到复用信号上,然后在复用信号上分离出原始信号的过程。文章通过详细的计算,推导出了载波信号合适的频率。通过不断的仿真实验,确定了高斯白噪声合适的信噪比。并且通过详细的分析计算,得出了切比雪夫滤波器的各项参数值。综上所述,设计出来的系统能较好的还原原信号。下一步工作可以考虑对图像信号进行FDMA 传输。 参考文献:
【1】《《信号与系统》计算机练习——利用MATLAB 》,刘树棠 译,西安交通大学出版社,2006
【2】《Signals and Systems》奥本海姆 著,电子工业出版社,2011
【3】《数学实验讲义》,电子科技大学数学科学学院,2010
附录:
%(1)获取录音文件
pause
fs=44100; %声音的采样频率为44.1khz
duration=5; %录音的时间
fprintf(' 按任意键开始录音1:\n');
pause;
fprintf(' 录音中„„\n');
sd1=audiorecorder(fs,16,1); %44.1kHz,16,单声道
recordblocking(sd1,duration); %5秒
fprintf(' 录音1完毕。\n');
y1=getaudiodata(sd1);
audiowrite('sound1.wav' ,y1,fs);
fs=44100; %声音的采样频率为44.1khz
fprintf(' 按任意键开始录音2:\n');
pause;
fprintf(' 录音中„„\n');
sd2=audiorecorder(fs,16,1); %44.1kHz,16,单声道
recordblocking(sd2,duration); %5秒
fprintf(' 录音2完毕。\n');
y2=getaudiodata(sd2);
audiowrite('sound2.wav' ,y2,fs);
fs=44100; %声音的采样频率为44.1khz
fprintf(' 按任意键开始录音3:\n');
pause;
fprintf(' 录音中„„\n');
sd3=audiorecorder(fs,16,1); %fs,16,单声道
recordblocking(sd3,duration); %5秒
fprintf(' 录音3完毕。\n');
y3=getaudiodata(sd3);
audiowrite('sound3.wav' ,y3,fs);
%(2)声音样本的时域和频域分析
fprintf(' 按任意键开始声音样本的时域分析:\n');
pause
fs=44100; %声音的采样频率为44.1Khz duration=5;
t=0:duration*fs-1; %总的采样数
[sd1,fs]=wavread('sound1.wav' ); %打开保存的录音文件
[sd2,fs]=wavread('sound2.wav' );
[sd3,fs]=wavread('sound3.wav' );
figure(1) %图一为三个声音样本的时域波形 subplot(311)
plot(t,sd1);xlabel(' 单位:s' );ylabel(' 幅度' );
title(' 三个声音样本的时域波形' );
subplot(312)
plot(t,sd2);xlabel(' 单位:s' );ylabel(' 幅度' );
subplot(313)
plot(t,sd3);xlabel(' 单位:s' );ylabel(' 幅度' );
fprintf(' 按任意键开始声音样本的频域分析:\n');
pause
figure(2) %图二为三个声音样本的频谱分析
subplot(311)
stem(t,abs(fft(sd1)),'.' ); %fft对声音信号进行快速傅里叶变换 xlabel(' 单位:Hz' );ylabel(' 幅度' );
title(' 三个声音样本的频谱分析' );
subplot(312)
stem(t,abs(fft(sd2)),'.' );xlabel(' 单位:Hz' );ylabel(' 幅度' );
subplot(313)
stem(t,abs(fft(sd3)),'.' );xlabel(' 单位:Hz' );ylabel(' 幅度' );
%(3)调制,将三个声音信号用高频载波进行调制
fprintf(' 按任意键开始信号的调制和复用信号频域分析:\n');
pause
x1=4*sd1'.*cos(2*pi*4000*t/fs);
x2=4*sd2'.*cos(2*pi*11000*t/fs);
x3=4*sd3'.*cos(2*pi*18000*t/fs);
s=x1+x2+x3;
figure(3)
stem(t,abs(fft(s)),'.' );xlabel(' 单位:Hz' );ylabel(' 幅度' );
title(' 复用信号的频谱分析' );
%(4)信号传输仿真设计
fprintf(' 按任意键开始信道仿真设计:\n'); %加入高斯白噪声
pause
ys=awgn(s,20);
figure(4)
stem(t,abs(fft(ys)),'.' );xlabel(' 单位:Hz' );ylabel(' 幅度' );
title(' 加入高斯白噪声后复用信号的频谱分析' );
%(5)带通滤波器的设计
fprintf(' 按任意键开始带通滤波器的设计:\n');
pause
Rp=0.5;
Rs=40;
Wp1=[4000 8000]/22050;
Ws1=[3800 8500]/22050;
[n1,Wn1]=cheb2ord(Wp1,Ws1,Rp,Rs);
[b1,a1]=cheby2(n1,Rs,Wn1);
[h1,w1]=freqz(b1,a1);
mag1=abs(h1);
db1=20*log10((mag1+eps)/max(mag1));
Wp2=[9000 13000]/22050;
Ws2=[8000 14000]/22050;
[n2,Wn2]=cheb2ord(Wp2,Ws2,Rp,Rs);
[b2,a2]=cheby2(n2,Rs,Wn2);
[h2,w2]=freqz(b2,a2);
mag2=abs(h2);
db2=20*log10((mag2+eps)/max(mag2));
Wp3=[14500 18500]/22050;
Ws3=[14000 19000]/22050;
[n3,Wn3]=cheb2ord(Wp3,Ws3,Rp,Rs);
[b3,a3]=cheby2(n3,Rs,Wn3);
[h3,w3]=freqz(b3,a3);
mag3=abs(h3);
db3=20*log10((mag3+eps)/max(mag3));
figure(5);
subplot(3,1,1);
plot(w1/pi,db1);axis([0 1 -50
20]);xlabel('w/pi');ylabel('20lg|H(ejw)|');
title(' 用切比雪夫2型设计三个带通滤波器' );
subplot(3,1,2);
plot(w2/pi,db2);axis([0 1 -50
20]);xlabel('w/pi');ylabel('20lg|H(ejw)|');
subplot(3,1,3);
plot(w3/pi,db3);axis([0 1 -50
20]);xlabel('w/pi');ylabel('20lg|H(ejw)|');
y1=filter(b1,a1,ys);
y2=filter(b2,a2,ys);
y3=filter(b3,a3,ys);
%(6)解调
fprintf(' 按任意键开始信号的解调和3路信号频域分析:\n'); pause
fs=44100;
y01=y1.*cos(2*pi*4000*t/fs);
y02=y2.*cos(2*pi*11000*t/fs);
y03=y3.*cos(2*pi*18000*t/fs);
figure(6)
subplot(311)
stem(t,abs(fft(y01)),'.' );xlabel(' 单位:Hz' );ylabel(' 幅度' ); title(' 解调后的3路信号各自的频谱图' );
subplot(312)
stem(t,abs(fft(y02)),'.' );xlabel(' 单位:Hz' );ylabel(' 幅度' ); subplot(313)
stem(t,abs(fft(y03)),'.' );xlabel(' 单位:Hz' );ylabel(' 幅度' ); %(7)低通滤波
fprintf(' 按任意键开始低通滤波器的设计:\n');
pause
Rp=0.5;
Rs=40;
Wp1=3400/22050;
Ws1=4000/22050;
[n1,Wn1]=cheb2ord(Wp1,Ws1,Rp,Rs);
[b1,a1]=cheby2(n1,Rs,Wn1);
[h1,w1]=freqz(b1,a1);
mag1=abs(h1);
db1=20*log10((mag1+eps)/max(mag1));
figure(7);
plot(w1/pi,db1);
axis([0 1 -50 20]);
xlabel('w/pi');
ylabel('20lg|H(ejw)|');
title(' 低通滤波器的频率响应' );
%(8)恢复信号的时域波形和频谱分析
fprintf(' 按任意键开始恢复信号以及3路信号时域分析:\n'); pause
yy1=filter(b1,a1,y01);
yy2=filter(b1,a1,y02);
yy3=filter(b1,a1,y03);
figure(8) %图七恢复信号的时域波形 subplot(311)
plot(t,yy1);xlabel(' 单位:s' );ylabel(' 幅度' );
title(' 恢复信号的时域波形' );
subplot(312)
plot(t,yy2);xlabel(' 单位:s' );ylabel(' 幅度' );
subplot(313)
plot(t,yy3);xlabel(' 单位:s' );ylabel(' 幅度' );
fprintf(' 按任意键开始3路信号频域分析:\n');
pause
figure(9) %图八恢复信号的频谱分析 subplot(311)
stem(t,abs(fft(yy1)));xlabel(' 单位:Hz' );ylabel(' 幅度' ); title(' 恢复信号的频谱分析' );
subplot(312)
stem(t,abs(fft(yy2)));xlabel(' 单位:Hz' );ylabel(' 幅度' ); subplot(313)
stem(t,abs(fft(yy3)));xlabel(' 单位:Hz' );ylabel(' 幅度' ); fprintf(' 放音中···\n');
audiowrite('sound1.wav' ,yy1,fs);
audiowrite('sound2.wav' ,yy2,fs);
audiowrite('sound3.wav' ,yy3,fs);
fprintf(' 放音完毕,仿真结束!\n');