基于MATLAB频分复用系统的研究与仿真设计课程报告.docx
《基于MATLAB频分复用系统的研究与仿真设计课程报告.docx》由会员分享,可在线阅读,更多相关《基于MATLAB频分复用系统的研究与仿真设计课程报告.docx(18页珍藏版)》请在冰豆网上搜索。
基于MATLAB频分复用系统的研究与仿真设计课程报告
.
《电子产品辅助设计与仿真》
课程考核报告
基于MATLAB频分复用系统的研究与仿真设计
完成日期2013年12月
1引言
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室MATLAB工作界面)。
是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
2课程设计要求
课程设计题目
基于MATLAB频分复用系统的研究与仿真设计
课程设计目的
通过本次综合设计,运用已学的课程知识,根据题目要求,使用Matlab软件进行通信系统的设计和仿真,对《电子产品辅助设计与仿真》课程中涉及的知识原理等方面有一定的感性认识和实践操作能力,从而加深对本课程知识点的理解,使学生应用知识能力、设计能力、调试能力以及报告撰写能力等方面有显著提高。
设计要求
用Matlab设计一个通信系统,调用M文件编程界面完成设计,M文件编程中可以调用Matlab通信模块内置的功能模块,也可以自己编写功能模块。
设计完成后,点击M文件界面上的运行按钮,可进行必要的交互式操作,最终通过绘图能显示运行结果。
(1)使用Matlab软件画出采样后语音信号的时域波形和频谱图。
(2)选择合适的高频载波,对采样信号进行调制。
(3)使用Matlab软件画出复用信号的频谱图。
(4)设计合适的带通滤波器,并画出带通滤波器的频率响应。
(5)对滤波后的信号进行解调,画出解调后各路信号的频谱图。
(6)设计低通滤波器,画出低通滤波器的频率响应。
恢复信号的时域波形和频谱图。
3设计过程及原理
频分复用通信系统模型建立
频分多址(FDMA)是使用最早、目前使用较多的一种多址接入方式,广泛应用于卫星通信、移动通信、一点多址微波通信系统中。
FDMA通信系统核心的思想是频分复用(FDM),复用是一种将若干个彼此独立的信号合并为一个可在同一个信道上传送的复合信号的方法。
例如,在电话通信系统中,语音信号频谱在300—3400Hz内,而一条干线的通信资源往往远大于传送一路语音信号所需的带宽。
这时,如果用一条干线只传一路语音信号会使资源大大的浪费,所以常用的方法是“复用”,使一条干线上同时传输几路电话信号,提高资源利用率。
频分复用(FDM)是信道复用按频率区分信号,即将信号资源划分为多个子频带,每个子频带占用不同的频率,如图所示。
然后把需要在同一信道上同时传输的多个信号的频谱调制到不同的频带上,合并在一起不会相互影响,并且能再接收端彼此分离开。
混频过程的时域表示式为:
(3-1)
图频分复用的子频带划分
频分复用通信系统理论原理
抽样的理论基础是抽烟定理,它说明在什么条件下能从抽样输出信号f0(t)中恢复输入信号f(t)。
根据频谱分析理论,只有抽样信号的频率不发生重叠现象时,抽样的频谱才能与信号频谱相一致。
因此,抽样定理可表述为:
为了使抽样信号f0(t)能完全恢复连续信号f(t),抽样信号重复频率必须大于等于2倍的,为包含任何干扰在内的信号f(t)的最高有效频率。
由于实际滤波器特性的不理想,抽样频率通常都有高于,一般取3到5倍。
语音信号频谱在300—3400Hz内,语音采样频率必须大于。
在MATLAB数据采集箱中提供语音采集wavrecord命令,wavrecord命令利用Windows音频输入设备记录声音,其调用形式为:
wavrecord(n,fs,ch)。
利用Windows音频输入设备记录n个音频采样,频率为fsHz,通道数为ch。
采样值返回到一个大小为n*ch的矩阵中。
缺省时,fs=11025,ch=1。
其中MATLAB提供的标准音频采样频率有:
8000、11025、22050和44100Hz。
为了保证语音的质量,本次设计中取语音信号的采用频率为44100Hz,该采样频率为语音信号CD音质。
语音信号采集后,可以用MATLAB数据采集箱中wavwrite命令保存采集的语音信号。
如图所示
图抽样过程波形
4MATLAB仿真
语音信号的时域和频域仿真
(1)信号的时域仿真
使用MATLAB软件可以对采集的语音信号进行时域和频域分析。
可以使用subplot(m,n,p)或者subplot(mnp)将多个图画到一个平面上的工具。
其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,p则是指要把曲线画到figure中哪个图上。
MATLAB中绘图命令plot(x,y),其含义是以x为横坐标,y为纵坐标,绘制图形。
可得到如图所示的时域分析图
图声音样本的时域分析
(2)信号频域仿真
频域分析主要是将3个声音样本信号sd1、sd2和sd3用MATLAB软件进行快速傅里叶变换后,再画出3个信号的频谱图。
其中快速傅里叶变换可以直接用MATLAB中的fft命令,然后通过abs得到经过快速傅里叶变换后信号的振幅。
最后用MATLAB中stem命令对于得到的离散序列实现其频谱图的绘制。
复用信号的频谱仿真
在MATLAB软件中将采样的3路语音信号经过混频处理得到3路已调信号x1、x2和x3,再通过加法器将3路信号变为一路复用信号s,通过MATLAB软件中stem(t,abs(fft(s)),'.')命令对复用信号s进行了频谱分析,其频谱分析如图所示。
图声音样本的频谱分析
传输信号的仿真
我们都知道FDMA通信系统的复用信号传输是通过空气介质传输的,复用信号在空气传输中会有很多的噪声,其中主要是以高斯白噪声为主,所以在信号传输的设计仿真中,主要对复用信号加入高斯白噪声。
在MATLAB中可以通过awgn函数在某一信号中加入高斯白噪声,其调用方式为:
y=awgn(x,SNR),其意义是在信号x中加入高斯白噪声;信噪比SNR以dB为单位,x的强度假定为0dBW。
如果x是复数,就加入复噪声。
通过前面的调制和信号复用设计后,得到了复用信号s,使用MATLAB中的awgn函数加入高斯白噪声后复用信号变为ys。
为了使后面能够较好的恢复语音信号,所以在这里加入白噪声时,信噪比不能设置的太小。
仿真发现大于20dB时失真比较小。
图为加入高斯白噪声后,复用信号ys的频谱图。
图加入高斯白噪声后复用信号的频谱分析
解调信号的频谱仿真
信号解调前,首先通过3个带通滤波器对复用信号s进行滤波,得到3路调制的语音信息y1、y2和y3,然后在对这三路信号进行解调,解调过程与调制的过程相同,使用与原来调制载波相同的信号分别与滤波后的3路信号相乘。
得到3路解调信号y01、y02和y03。
然后对各路信号使用MATLAB软件中的快速傅里叶变换函数fft进行变换,并通过MATLAB软件,得到的3路解调信号的频谱如图所示。
图解调后信号的频谱图
恢复信号的时域与频域仿真
语音信号的恢复就是将前面解调所得到的3路信号y01、y02和y03再通过低通滤波器使用filter函数滤波后,分别得到3路恢复的语音信号。
然后调用MATLAB中的plot(t,yy1)函数和subplot函数对恢复的3路语音信号进行时域分析,其时域分析波形如图所示。
图恢复信号的时域波形
5体会与收获
经这次课程设计,我不仅复习巩固了课堂所学的理论知识,还提高了对所学知识的综合应用。
同时,在以前课本学习中没有弄懂的问题,通过这次课程设计,我都有了更深入的理解。
比如通信原理中的时域采样定理、滤波器参数设计等。
在设计经过不断的修改调试,在MATLAB上仿真频分多址通信技术取得了较好的效果。
录音的声音再经过调试和解调后的信号与原来相比较为接近。
我觉得仿真的成功关键在于载波频率的选择以及带通和低通滤波器的参数设计。
另外在低通滤波阶段,得到的恢复信号与原始信号基本一致,但是在t=0附近有所失真,这是由于频谱混叠所致,各信号频谱混叠部分均为高频部分,恢复信号在附近的波峰变换最快。
即频率最高的区域,引起高频部分失真,这是因为录音期间引入频率高于语音信号的噪声,所以如果在完全无噪音的环境中进行录音,可得无失真的恢复信号。
仿真结果分析表明,信号在频分复用时还存在着频间干扰的问题,对此,采用了适当加大采样频率的方法,在较大程度上使该问题得以解决至于完全消除频谱间的干扰,还有待进一步研究与完善。
参考文献
[1]张志涌精通MATLAB版教程.北京:
北京航天航空大学出版社,2003(56)
[2]胡鹏,徐会燕.基于matlab的图像去噪算法的研究与实现《福建电脑》,2009(12)
[3]李彦军,苏红旗等.改进的中值滤波图像去噪方法研究《计算机工程与设计》,2009(12)
[4]孙宏琦,施维颖,巨永峰.利用中值滤波进行图像处理《长安大学学报(自然科学版)》,2003
(2)
[5]周建兴,MATLAB从入门到精通.人民邮电出版社2008(60)
附录
放入程序源代码
附录一:
MATLAB仿真程序
%
(1)获取录音文件
pause
fs=44100;%声音的采样频率为
duration=3;%录音时间为3s
fprintf('按任意键开始录音1:
\n');
pause
fprintf('录音中•••\n');
sd1=wavrecord(duration*fs,fs);%duration*fs每次获得总的采样数为132300,保存声音文件名为sd1
fprintf('放音中•••\n');
wavplay(sd1,fs);
fprintf('录音1播放完毕。
\n');
wavwrite(sd1,fs,'');%将录音文件保存为WAV格式的声音文件
fprintf('按任意键开始录音2:
\n');
pause
fprintf('录音中•••\n');
sd2=wavrecord(duration*fs,fs);
fprintf('放音中•••\n');
wavplay(sd2,fs);
fprintf('录音2播放完毕。
\n');
wavwrite(sd2,fs,'');
fprintf('按任意键开始录音3:
\n');
pause
fprintf('录音中•••\n');
sd3=wavrecord(duration*fs,fs);
fprintf('放音中•••\n');
wavplay(sd3,fs);
fprintf('录音3播放完毕。
\n');
wavwrite(sd3,fs,'');
%
(2)声音样本的时域和频域分析
fprintf('按任意键开始声音样本的时域分析:
\n');
pause
fs=44100;%声音的采样频率为
duration=3;
t=0:
duration*fs-1;%总的采样数
[sd1,fs]=wavread('');%打开保存的录音文件
[sd2,fs]=wavread('');
[sd3,fs]=wavread('');
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);
snr=10*log10((s*s')/((s-ys)*(s-ys)'));
snr%计算信噪比
figure(4)
stem(t,abs(fft(ys)),'.');xlabel('单位:
Hz');ylabel('幅度');
title('加入高斯白噪声后复用信号的频谱分析');
%(5)带通滤波器的设计
fprintf('按任意键开始带通滤波器的设计:
\n');
pause
Rp=;
Rs=40;
Wp1=[40008000]/22050;
Ws1=[38008500]/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=[900013000]/22050;
Ws2=[800014000]/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=[1450018500]/22050;
Ws3=[1400019000]/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([01-5020]);xlabel('w/pi');ylabel('20lg|H(ejw)|');
title('用切比雪夫2型设计三个带通滤波器');
subplot(3,1,2);
plot(w2/pi,db2);axis([01-5020]);xlabel('w/pi');ylabel('20lg|H(ejw)|');
subplot(3,1,3);
plot(w3/pi,db3);axis([01-5020]);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=;
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([01-5020]);
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');
pause
fprintf('放音中•••\n');
wavplay(yy1,fs);
wavplay(yy2,fs);
wavplay(yy3,fs);
fprintf('放音完毕,仿真结束!
\n');