通信原理matlab实验1
通信原理matlab实验
在无码间串扰和噪声的理想情况下,波形无失真,每个码元将重叠在一起,最终在示波器上看到的是迹线又细又清晰的“眼睛”,“眼”开启得最大。当有码间串扰时,波形失真,码元不完全重合,眼图的迹线就会不清晰,引起“眼”部分闭合。若再加上噪声的影响,则使眼图的线条变得模糊,“眼”开启得小了,因此,“眼”张开的大小表示了失真的程度,反映了码间串扰的强弱。由此可知,眼图能直观地表明码间串扰和噪声的影响,可评价一个基带传输系统性能的优劣。另外也可以用此图形对接收滤波器的特性加以调整,以减小码间串扰和改善系统的传输性能。
从以上分析可知,眼图可以定性反映码间串扰的大小和噪声的大小,眼图还可以用来指示接受滤波器的调整,以减少码间串扰,改善系统性能。
使用了随机数,产生的基带信号也是随机的,经过加白噪声,产生的眼图也是不一样的。选取的采样频率也影响着最后的博兴和眼图。一开始的时候,提示加噪声的部分有问题,通过调试,发现工作空间设置的不准确,相加会出现错误,将工作空间加大,语法没错了,但是眼图出不来。后来经过仔细观察,发现做卷积的时候把一个元素弄错了,经过修改,最终成功运行。
2015年6月25日
基于MATLAB的第一类部分响应系统的
基带信号及其眼图实现
摘要
所谓眼图,是指通过用示波器观察接收端的基带信号波形,从而估计和调整系统性能的一种方法。这种方法具体做法是:用一个示波器跨接在抽样判决器的输入端,然后调整示波器水平扫描周期,使其与接受码元的周期同步。此时可以从示波器显示的图形上,观察码间干扰和信道噪声等因素影响的情况,从而估计系统性能的优劣程度。因为在传输二进制信号波形时,示波器显示的图像很像人的眼睛,故名“眼图”。
matlab通信原理实验
一: 低通信号抽样定理1: 仿真思路:t+2 -2≤t≤-1信号 x(t)= 1 -1<t≤1-t+2 1<t≤20 其他信号x(t)经傅里叶变换可得X(f)=4sin c2(2f)-sinc2(f)2:程序代码%参数设置ts=0.2;fs=1/ts;df=0.01;f1=[-2.5:0.001:2.5]; %根据采样定理进行抽样x=[zeros(1,10),[0:0.2:1],ones(1,9),[1:-0.2:0],zeros(1,10)]; %对采样信号进行FFT[X,x,df1]=fftseq(x,ts,df);X1=X/fs;f=[0:df1:df1*(length(x)-1)]-fs/2; %解析法计算信号幅度谱y=4*(sinc(2*f1)).^2-(sinc(f1)).^2;%绘图指令subplot(2,1,1)plot(f1,abs(y));xlabel('f')title('解析法求得的x(t)幅度谱')subplot(2,1,2)plot(f,fftshift(abs(X1)));xlabel('f')title('根据采样定理(数值法)求得的x(t)幅度谱')另: FFT算法程序 matlab 上没有,需要在网上找到,并保存到matlab 函数库中。
下面是图形截屏:二:模拟信号幅度调制解调及噪声对其影响1,:仿真思路(1) 首先利用载波对信号进行调制,采用常规的AM调制方式。
V(t)=(1+amn(t))coswct(2) 利用包络检波方式解调。
v(t)的包络v(t)=(uc 2(t)+us2(t))0.5(3) 加入噪声。
2:程序代码echo ont0=0.15; %信号m(t)ts=0.001; %采样间隔fc=250; %载频a=0.85; %调制指数fs=1/ts; %采样频率t=[0:ts:t0]; %时间取值df=0.25;m=[ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)]; %信号c=cos(2*pi*fc.*t); %载波m_n=m/max(abs(m)); %单位化信号[M,m,df1]=fftseq(m,ts,df); %傅里叶变化f=[0:df1:df1*(length(m)-1)]-fs/2; %频率向量u=(1+a*m_n).*c; %已调信号[U,u,df1]=fftseq(u,ts,df); %傅里叶变化env=env_phas(u); %包络检波dem1=2*(env-1)/a;signal_power=spower(u(1:length(t))); %已调信号的功率 noise_power=signal_power/100; %噪声功率noise_std=sqrt(noise_power);noise=noise_std*randn(1,length(u));r=u+noise; %添加噪声[R,r,df1]=fftseq(r,ts,df);env_r=env_phas(r); %包络检波dem2=2*(env_r-1)/a; %有噪声时的解调信号pausesubplot(2,1,1)plot(t,m(1:length(t)))axis([0 0.15 -2.1 2.1])xlabel('时间')title('消息信号')pauseclfsubplot(2,1,1)plot(t,u(1:length(t)))axis([0 0.15 -2.1 2.1])xlabel('时间')title('已调信号')subplot(2,1,2)plot(t,env(1:length(t)))xlabel('时间')title('已调信号的包络')pauseclfsubplot(2,1,1)plot(t,dem1(1:length(t)))xlabel('时间')title('解调后的信号')subplot(2,1,2)plot(t,dem2(1:length(t)))xlabel('时间')title('有噪声的解调后的信号')pauseclfsubplot(2,1,1)length(m)plot(f,fftshift(abs(M)));axis([-400,400,0,150]);title('原始信号的幅度谱')subplot(2,1,2)plot(f,fftshift(abs(U))); axis([-400,400,0,100]); title('已调信号的幅度谱'); 仿真结果截图:三:单边带调幅系统的建模仿真1:程序代码:t0=0.15; %信号持续时间ts=0.001; %采样时间间隔Fc=250; %载波频率Fs=1/ts; %采样频率df=0.3; %频率分辨率t=[0:ts:t0]; %时间矢量m=[ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)]; c=cos(2*pi*Fc*t); %载波信号b=sin(2*pi*Fc*t);ussb=m.*c-imag(hilbert(m)).*b; %上边带调制信号lssb=m.*c+imag(hilbert(m)).*b; %下边带调制信号[M,m,dfl]=fft_seq(m,ts,df); %傅里叶变化M=M/Fs;[U,ussb,dfl]=fft_seq(ussb,ts,df);U=U/Fs;[L,lssb,dfl]=fft_seq(lssb,ts,df);f=[0:dfl:dfl*(length(m)-1)]-Fs/2; %频率矢量subplot(2,2,1);plot(t,ussb(1:length(t))); %上边带调制信号title('上边带调制信号');subplot(2,2,2);plot(t,lssb(1:length(t)));title('下边带调制信号'); %下边带调制信号subplot(2,2,3);plot(f,abs(fftshift(U)));title('上边带调制信号频谱 '); %上边带调制信号频谱subplot(2,2,4);plot(f,abs(fftshift(U)));title('下边带调制信号频谱'); %下边带调制信号频谱注:傅里叶变化函数fft_seq需要自己定义图像截屏:四:双边带调幅系统的建模仿真1:仿真原理:1 0≤t≤t/3设消息信号:m(t)= -2 t0/3≤t≤2t/30其它用信号m(t)一DSB-AM方式调制载波c(t)=cos(2pift)所得到的已调信号记为cu(t).设t0=0.15s,fc=250Hz。
通信原理1_通信原理报告(AM及DSB)
AM/DSB实验一、实验目的:学会利用MATLAB两种仿真方法对AM/DSB仿真。
通过实验提高学生实际动手能力和编程能力,为日后从事通信工作奠定良好的基础。
二、实验内容:(1)设调制信号m(t)=cos(2*π*fh*t),fh=0.2Hz,直流分量A=1,载波c(t)=cos(2*π*fc*t),fc=2Hz,编程画出调制信号、载波及AM的图形。
(2)采用Simulink对AM及DSB调制解调过程进行仿真。
三、程序和实验结果:(1)程序(a)AM调制解调%AM调制程序clf;clear;t=0:0.001:20;fc=2;fh=0.2;A=1;mt=cos(2*pi*fh*t);subplot(3,1,1);plot(t,mt);carrier=cos(2*pi*fc*t);smt=(A+mt).*carrier;subplot(3,1,2);plot(t,carrier);subplot(3,1,3);plot(t,smt);(b)DBS调制解调%DSB调制程序clf;clear;t=0:0.001:20;fc=2;fh=0.2;mt=cos(2*pi*fh*t); subplot(3,1,1);plot(t,mt);carrier=cos(2*pi*fc*t); smt=(mt).*carrier; subplot(3,1,2);plot(t,carrier);subplot(3,1,3);plot(t,smt);(2)simulink(a)AM仿真模型参数设定:sine Wave中frequency设为5rad/sec,sine Wave及sine Wave2中frequency设为40rad/sec,Analog Filter Design中的Design method设为Butterworth,Filter type设为Lowpass,Passband edge frequency设为6,点击scope中的图标,设置number of axes为3。
通信原理matlab实验报告
通信原理matlab实验报告《通信原理matlab实验报告》在现代通信系统中,通信原理是至关重要的一部分。
为了更好地理解和应用通信原理,我们进行了一系列的实验,并在本报告中分享我们的实验结果和分析。
首先,我们使用了Matlab软件进行了频谱分析实验。
通过对信号的频谱进行分析,我们能够更好地了解信号的频率分布特性,从而为信号的传输和处理提供了重要的参考。
在实验中,我们使用了不同的信号类型,并通过Matlab的频谱分析工具对其进行了分析。
通过实验结果,我们发现不同类型的信号在频谱上呈现出不同的特征,这为我们在实际通信系统中的信号处理提供了重要的指导。
其次,我们进行了调制解调实验。
调制是将数字信号转换为模拟信号的过程,而解调则是将模拟信号转换为数字信号的过程。
在实验中,我们使用Matlab模拟了调制解调过程,并通过实验结果验证了调制解调的正确性。
通过这一实验,我们深入理解了调制解调的原理和过程,并为实际通信系统中的信号处理提供了重要的参考。
最后,我们进行了信道编码解码实验。
信道编码是为了提高通信系统的可靠性和抗干扰能力而进行的一种技术手段。
在实验中,我们使用Matlab对信道编码进行了模拟,并通过实验结果验证了信道编码的效果。
通过这一实验,我们更加深入地理解了信道编码的原理和作用,为实际通信系统中的信号处理提供了重要的参考。
综上所述,通过本次实验,我们更加深入地理解了通信原理的相关知识,并通过Matlab软件进行了实际操作,加深了对通信原理的理解和应用。
这些实验结果对我们今后在通信系统设计和应用中将起到重要的指导作用。
希望通过这份实验报告的分享,能够对通信原理的学习和应用有所帮助。
湘潭大学通信原理实验第一次
湘潭大学通信原理实验报告书课程名称:通信原理题目:数字基带传输系统的MATLAB仿真模拟信号幅度调制仿真实验学生姓名:唐绪泉学号:2010964530班级:2010级通信工程班指导教师:王仕果2012年12 月实验一数字基带传输系统的MATLAB仿真一、实验目的:1、熟悉和掌握常用的用于通信原理时域仿真分析的MATLAB函数;2、掌握连续时间和离散时间信号的MATLAB产生;3、牢固掌握冲激函数和阶跃函数等函数的概念,掌握卷积表达式及其物理意义,掌握卷积的计算方法、卷积的基本性质;4、掌握利用MATLAB计算卷积的编程方法,并利用所编写的MATLAB程序验证卷积的常用基本性质;5、掌握MATLAB描述通信系统中不同波形的常用方法及有关函数,并学会利用MATLAB求解系统功率谱,绘制相应曲线。
二、实验内容1、编写MATLAB程序产生离散随机信号2、编写MATLAB程序生成连续时间信号3、编写MATLAB程序实现常见特殊信号三、实验原理:从通信的角度来看,通信的过程就是消息的交换和传递的过程。
而从数学的角度来看,信息从一地传送到另一地的整个过程或者各个环节不外乎是一些码或信号的交换过程。
例如信源压缩编码、纠错编码、AMI编码、扰码等属于码层次上的变换,而基带成形、滤波、调制等则是信号层次上的处理。
码的变换是易于用软件来仿真的。
要仿真信号的变换,必须解决信号与信号系统在软件中表示的问题。
3.1 信号及系统在计算机中的表示3.1.1 时域取样及频域取样一般来说,任意信号s(t)是定义在时间区间(-∞,+∞)上的连续函数,但所有计算机的CPU都只能按指令周期离散运行,同时计算机也不能处理(-∞,+∞)这样一个时间段。
为此将把s(t)按区间,22TT⎡⎤−⎢⎥⎣⎦截短为s T(t),再对s T(t)按时间间隔Δt均匀取样,得到取样点数为:TNtt=Δ (3-1)仿真时用这个样值集合来表示信号s(t)。
显然Δt反映了仿真系统对信号波形的分辨率,Δt越小,则仿真的精确度越高。
通信原理实验报告matlab
通信原理实验报告matlab《通信原理实验报告:MATLAB》摘要:本实验报告基于通信原理课程的实验要求,利用MATLAB软件进行了一系列的实验。
通过实验,我们深入了解了通信原理中的一些重要概念和技术,并通过MATLAB软件进行了模拟和分析。
本实验报告将详细介绍实验的目的、原理、实验步骤、实验结果和分析,以及对实验过程中遇到的问题和解决方法进行了总结和讨论。
1. 实验目的本实验旨在通过使用MATLAB软件进行通信原理相关的实验,加深对通信原理中的相关概念和技术的理解,并通过实际操作加强对课程知识的掌握和应用能力。
2. 实验原理在本实验中,我们将涉及到通信原理中的一些重要概念和技术,包括信号的调制与解调、信道编码、信道调制等内容。
通过MATLAB软件,我们可以对这些概念和技术进行模拟和分析,从而更好地理解其原理和应用。
3. 实验步骤本实验中,我们将根据实验要求,依次进行一系列的实验步骤,包括信号的调制与解调、信道编码、信道调制等内容。
通过MATLAB软件,我们将对这些实验步骤进行模拟和分析,得到实验结果。
4. 实验结果和分析在实验过程中,我们得到了一系列的实验结果,并进行了详细的分析。
通过对这些实验结果的分析,我们可以更好地理解通信原理中的相关概念和技术,并加深对课程知识的理解和掌握。
5. 实验总结和讨论在实验过程中,我们也遇到了一些问题,并通过一些方法进行了解决。
在本部分,我们将对实验过程中遇到的问题和解决方法进行总结和讨论,以便更好地应对类似的实验问题。
通过本次实验,我们加深了对通信原理中的相关概念和技术的理解,并通过MATLAB软件进行了模拟和分析,得到了一系列的实验结果。
这些实验结果将有助于我们更好地理解通信原理中的相关知识,并加强对课程知识的掌握和应用能力。
同时,本次实验也为我们今后的学习和研究提供了一定的参考和借鉴。
通信原理MATLAB实验(第1部分)
t=0:1/t0:length(x);
%定义时间序列
i=1;
%直接对一段二进制数编码
if x(i)==1
%由于前面的值不定,所以单独给出头一个值,若第一个
信息为1
for j=1:t0/2
y((2*i-2)*t0/2+j)=0; %前半时间为0
y((2*i-1)*t0/2+j)=1; %后半时间为1
end
else
for j=1:t0
%如果输入信息为0
y((i-1)*t0+j)=0; %所有时间为0
end
end
for i=2:length(x) %从第二个信息起编码与前面的码元有
关系
if x(i)==1
%若输入的信息为1
for j=1:t0/2
y((2*i-2)*t0/2+j)=y((2*i-3)*t0/2+t0/4);
plot(t,y);
title('1 0 1 1 0 0 1 0');
grid on;
axis([0,i, -0.1,1.1]);
Miller码(延迟调制码)
编码规则:“1”码用码元持续时间中心点出现跃变来表示,即用“10”或 “01”表示,前半时间的电平与前一码元后半时间的电平相同。“0”码分两种情 况处理:对于单个“0”时,在码元持续时间内不出现电平跃变,且与相邻码元 的边界处也不跃变;对于连“0”时,在两个“0”码的边界处出现电平跃变,即 “00”与“11”交替。其波形表示如图1-8所示。
y((2*i-1)*t0/2+j)=1; %后半时间为1
end
else
for j=1:t0/2
%如果输入信息为0
通信原理实验教程(MATLAB)
实验教程目录实验一:连续时间信号与系统的时域分析-------------------------------------------------6一、实验目的与要求---------------------------------------------------------------------------6二、实验原理-----------------------------------------------------------------------------------61、信号的时域表示方法------------------------------------------------------------------62、用MATLAB仿真连续时间信号和离散时间信号----------------------------------73、LTI系统的时域描述-----------------------------------------------------------------11三、实验步骤与内容--------------------------------------------------------------------------15四、实验报告要求-----------------------------------------------------------------------------26实验二:连续时间信号的频域分析一、实验目的与要求--------------------------------------------------------------------------27二、实验原理----------------------------------------------------------------------------------271、连续时间周期信号的傅里叶级数CTFS---------------------------------------------272、连续时间信号的傅里叶变换CTFT--------------------------------------------------283、离散时间信号的傅里叶变换DTFT -------------------------------------------------284、连续时间周期信号的傅里叶级数CTFS的MATLAB实现------------------------295、用MATLAB实现CTFT与其逆变换的计算---------------------------------------33三、实验步骤与内容----------------------------------------------------------------------3 4四、实验报告要求-------------------------------------------------------------------------48实验三:连续时间LTI系统的频域分析---------------------------------------------------49一、实验目的与要求--------------------------------------------------------------------------49二、实验原理----------------------------------------------------------------------------------491、连续时间LTI系统的频率响应2、LTI系统的群延时---------------------------------------------------------------------503、用MATLAB计算系统的频率响应--------------------------------------------------50三、实验步骤与内容----------------------------------------------------------------------5 1四、实验报告要求-------------------------------------------------------------------------58实验四:调制与解调以与抽样与重建------------------------------------------------------59一、实验目的与要求--------------------------------------------------------------------------59二、实验原理----------------------------------------------------------------------------------591、信号的抽样与抽样定理---------------------------------------------------------------592、信号抽样过程中的频谱混叠----------------------------------------------------------623、信号重建-------------------------------------------------------------------------------624、调制与解调----------------------------------------------------------------------------------645、通信系统中的调制与解调仿真---------------------------------------------------------66三、实验步骤与内容------------------------------------------------------------------------66四、实验报告要求---------------------------------------------------------------------------75实验五:连续时间LTI系统的复频域分析----------------------------------------------76一、实验目的与要求------------------------------------------------------------------------76二、实验原理--------------------------------------------------------------------------------761、连续时间LTI系统的复频域描述--------------------------------------------------762、系统函数的零极点分布图-----------------------------------------------------------------773、拉普拉斯变换与傅里叶变换之间的关系-----------------------------------------------784、系统函数的零极点分布与系统稳定性和因果性之间的关系------------------------795、系统函数的零极点分布与系统的滤波特性-------------------------------------------806、拉普拉斯逆变换的计算-------------------------------------------------------------81三、实验步骤与内容------------------------------------------------------------------------82四、实验报告要求---------------------------------------------------------------------------87附录:授课方式和考核方法-----------------------------------------------------------------88实验一信号与系统的时域分析一、实验目的1、熟悉和掌握常用的用于信号与系统时域仿真分析的MATLAB函数;2、掌握连续时间和离散时间信号的MATLAB产生,掌握用周期延拓的方法将一个非周期信号进展周期信号延拓形成一个周期信号的MATLAB编程;3、结实掌握系统的单位冲激响应的概念,掌握LTI系统的卷积表达式与其物理意义,掌握卷积的计算方法、卷积的根本性质;4、掌握利用MATLAB计算卷积的编程方法,并利用所编写的MATLAB程序验证卷积的常用根本性质;掌握MATLAB描述LTI系统的常用方法与有关函数,并学会利用MATLAB求解LTI系统响应,绘制相应曲线。
通信原理Matlab仿真实验报告
通信原理Matlab仿真实验报告学号:姓名:实验一1、利用Matlab实现矩形信号串信号分解与合成⑴ Matlab程序代码:①矩形信号串信号分解与合成函数rectexpd():function rectexpd(T1,T0,m)%矩形信号串信号分解与合成%T1:矩信号区间为(-T1/2,T1/2)%T0:矩形矩信信号串周期%m:傅里叶级数展开项次数t1=-T1/2:0.01:T1/2;t2=T1/2:0.01:(T0-T1/2); t=[(t1-T0)';(t2-T0)';t1';t2';(t1+T0)'];n1=length(t1);n2=length(t2); %根据周期矩形信号函数周期,计算点数f=[ones(n1,1);zeros(n2,1);ones(n1,1);zeros(n2 ,1);ones(n1,1)]; %构造周期矩形信号串y=zeros(m+1,length(t));y(m+1,:)=f';figure(1);plot(t,y(m+1,:)); %绘制周期矩形信号串axis([-(T0+T1/2)-0.5,(T0+T1/2)+0.5,0,1.2]); set(gca,'XTick',[-T0,-T1/2,T1/2,T0]);set(gca,'XTickLabel',{'-T0','-T1/2','T1/2','T0'}) ;title('矩形信号串');grid on; a=T1/T0;pause; %绘制离散幅度谱freq=[-20:1:20];mag=abs(a*sinc(a*freq)); stem(freq,mag);x=a*ones(size(t));for k=1:m %循环显示谐波叠加图形pause;x=x+2*a*sinc(a*k)*cos(2*pi*t*k/T0);y(k,:)=x;plot(t,y(m+1,:));hold on;plot(t,y(k,:));hold off;grid on;axis([-(T0+T1/2)-0.5,[T0+T1/2]+0.5,-0.5,1.5]) ;title(strcat(num2str(k),'次谐波叠加')); xlabel('t');endpause;plot(t,y(1:m+1,:));grid on;axis([-T0/2,T0/2,-0.5,1.5]);title('各次谐波叠加');xlabel('t');②在命令窗口调用rectexpd()函数:T1=5;T0=10;m=5;rectexpd(T1,T0,m)⑵Matlab仿真结果:1次谐波叠加t3次谐波叠加tt2次谐波叠加t4次谐波叠加tt2、利用Matlab实现连续信号卷积运算⑴ Matlab程序代码:①连续信号卷积运算的通用函数sconv():function [f,k]=sconv(f1,f2,k1,k2,p) f=conv(f1,f2);f=f*p;k0=k1(1)+k2(1);k3=length(f1)+length(f2)-2;k=k0:p:k3*p; subplot(2,2,1); plot(k1,f1); title('f1(t)'); xlabel('t'); ylabel('f1(t)');subplot(2,2,2);plot(k2,f2);title('f2(t)'); xlabel('t'); ylabel('f2(t)'); subplot(2,2,3); plot(k,f); title('f(t)=f1(t)*f2(t)'); xlabel('t'); ylabel('f(t)');h=get(gca,'position'); h(3)=2.5*h(3);set(gca,'position',h);②在命令窗口调用sconv ()函数: p=0.01; k1=0:p:2; f1=exp(-k1); k2=0:p:3;f2=ones(1,length(k2)); [f,k]=sconv(f1,f2,k1,k2,p)⑵Matlab 仿真结果:0.511.5200.51f1(t)tf 1(t )01230.511.52f2(t)tf 2(t )00.51 1.522.533.544.550.51f(t)=f1(t)*f2(t)tf (t )实验二1、用Matlab模拟图形A律解码⑴Matlab程序代码:①建立函数ADecode()function y=ADecode(code,n) codesize=size(code);cr_len=codesize(1);cl_len=codesize(2);ca=zeros(1,cl_len-1);for i=1:cr_lenca=code(i,2:n);s=0;for j=1:n-1s=s+ca(j)*2^(n-1-j);enda=code(i,1);y(i)=s*((-1)^(a+1)); endy=y/(2^(n-1));A=87.6;A1=1+log(A); for j=1:length(y)if(y(j)>=0)if(y(i)<=1/A1)y(j)=y(j)*A1/A;elsey(j)=exp(y(j)*A1-1/A);endelsetemp=-y(j);if(temp<=1/A1)y(j)=-temp*A1/A;elsey(j)=-exp(temp*A1-1)/A;endendend②建立函数APCM()function code=APCM(x,n)xmax=max(abs(x));x=x/xmax;xlen=length(x);y=zeros(1,xlen);A=87.6;A1=1+log(A);for i=1:xlenif x(i)>=0if x(i)<=1/Ay(i)=(A*x(i))/A1;elsey(i)=(1+log(A*x(i)))/A1;endelsex1=-x(i);if x1<=1/Ay(i)=-(A*x1)/A1;elsey(i)=-(1+log(A*x1))/A1;endendendy1=y*(2^(n-1)-1);y1=round(y1);code=zeros(length(y1),n); c2=zeros(1,n-1);for i=1:length(y1)if(y1(i)>0)c1=1;elsec1=0;y1(i)=-y1(i);endfor j=1:n-1r=rem(y1(i),2);y1(i)=(y1(i)-r)/2;c2(j)=r;endc2=fliplr(c2);code(i,:)=[c1 c2];end③在新函数中调用前两个函数 t=0:0.01:1; x=sin(2*pi*t); code=APCM(x,7); y=ADecode(code,7); subplot(2,1,1) plot(t,x);title('原函数的图形'); subplot(2,1,2) plot(t,y);title('解码后函数的图形');⑵Matlab 仿真结果:00.10.20.30.40.50.60.70.80.91-1-0.500.51原函数的图形00.10.20.30.40.50.60.70.80.91-1-0.50.5解码后函数的图形2、用Matlab 模拟DSB 调制及解调过程 ⑴Matlab 程序代码: close all; clear all;dt=0.001;%采样时间间隔 fm=1; %信源最高频率 fc=10; %载波中心频率 N=4096;T=N*dt; t=0:dt:T-dt;mt=sqrt(2)*cos(2*pi*fm*t);%信源s_dsb=mt.*cos(2*pi*fc*t); %DSB-SC 双边带抑制载波调幅B=2*fm;figure(1); subplot(311) plot(t,s_dsb,'b-');hold on; %画出DSB 信号波形plot(t,mt,'r--');%画出m(t)信号波形 title('DSB 调制信号'); xlabel('t'); grid on;%DSB demodulation rt=s_dsb.*cos(2*pi*fc*t); rt=rt-mean(rt); [f,rf]=T2F(t,rt); [t,rt]=lpf(f,rf,B); subplot(312) plot(t,rt,'k-'); hold on;plot(t,mt/2,'r--');title('相干解调后的信号波形与输入信号的比较'); xlabel('t'); grid on; subplot(313)[f,sf]=T2F(t,s_dsb); %求调制信号的频谱psf=(abs(sf).^2)/T; %求调制信号的功率谱密度 plot(f,psf);axis([-2*fc 2*fc 0 max(psf)]); title('DSB 信号功率谱'); xlabel('f'); grid on;⑵Matlab 仿真结果:00.51 1.52 2.53 3.54 4.5-22DSB 调制信号t0.511.522.533.544.5-101相干解调后的信号波形与输入信号的比较t-20-15-10-5051015200.5DSB 信号功率谱f实验三1、用Matlab模拟双极性归零码⑴ Matlab程序代码:function y=drz(x)t0=300;x=[1 0 0 1 1 0 0 0 0 1 0 1];t=0:1/t0:length(x);for i=1:length(x);if(x(i)==1)for j=1:t0/2y(t0/2*(2*i-2)+j)=1;y(t0/2*(2*i-1)+j)=0;endelsefor j=1:t0/2y(t0/2*(2*i-2)+j)=-1;y(t0/2*(2*i-1)+j)=0;endendendy=[y,x(i)];M=max(y);m=min(y); subplot(211)plot(t,y);grid on;axis([0,i,m-0.1,M+0.1]);title('1 0 0 1 1 0 0 0 0 1 0 1 ');⑵Matlab仿真结果:2、用Matlab产生2FSK信号⑴ Matlab程序代码:①建立函数fskdigital()function fskdigital(s,f1,f2) t=0:2*pi/99:2*pi;m1=[];c1=[];b1=[];for n=1:length(s)if s(n)==0;m=ones(1,100);c=sin(f2*t);b=zeros(1,100) else s(n)==1;m=ones(1,100);c=sin(f1*t);b=ones(1,100)endm1=[m1 m]; c1=[c1 c]; b1=[b1 b]; endfsk=c1.*m1;subplot(211);plot(b1,'r')title('原始信号');axis([0 100*length(s) -0.1 1.1]);grid on;subplot(212);plot(fsk)title('2FSK信号');grid on;②在命令窗口调用函数fskdigital() >> s=[1 0 1 1 0 0 1 0]; f1=200; f2=100;fskdigital(s,f1,f2)⑵Matlab 仿真结果:10020030040050060070080000.20.40.60.81原始信号100200300400500600700800-1-0.500.512FSK 信号3、用Matlab 的simulink 模块模拟三角波的分解与还原 ⑴模块图⑵仿真结果:①三角波原图②用矩形波近似的冲击函数③分解后的三角波④经低通还原的三角波。
基于Matlab(Simulink)《通信原理》实验仿真(模拟部分)
基于Matlab(Simulink)《通信原理》实验仿真(模拟部分)基于Matlab(Simulink)《通信原理》实验仿真(模拟部分)摘要模拟通信在通信系统中的使用非常广泛,而MATLAB(Simulink)是用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,它可以解决包括信号和图像处理、通讯等众多应用领域中的问题。
利用MATLAB集成环境下的M文件和Simulink工具箱可以完成通讯系统设计与仿真,本文主要是利用MATLAB集成环境下的M文件,编写程序来实现AM、FM、VSB调制与解调过程,并分别绘制出其信号波形。
再通过Simulink工具箱对模拟通信系统进行建模仿真。
Simulation of communication in a communication system is very extensive, and the use of MATLAB (Simulink) is used to algorithm development, data visualization, data analysis and numerical calculation of the senior technical calculation language and interactive environment, it can solve the including signal and image processing, communicationetc many applications in question. MATLAB integration environment Mfiles and Simulink tool box can complete communication system design and simulation, this paper is mainly use of MATLAB integration environment, programming of the M files to achieve AM, FM, VSB modulation and demodulation process, and separately plot its signal waveform. Again through Simulink communication system toolbox of simulation modeling simulation .关键词模拟信号;AM;FM;VSB;调制解调;MATLAB(Simulink)目录:第一章绪论第二章理论与方法2.1 matlab简介2.2 Simulink简介2.3 通信原理概述第三章设计方案3.1用 MATLAB的M文件进行模拟调制3.1.1 基于MATLAB的AM信号调制与解调3.1.2 基于MATLAB的FM信号调制与解调3.1.3 基于MATLAB的VSB信号调制与解调3.2用Simulink对模拟通信系统进行建模仿真3.2.1频分复用和超外差接收机的仿真模型3.2.2调频立体声接收机模型第四章小结参考文献致谢附录1:程序清单第一章绪论调制在通信系统中的作用至关重要。
通信原理实验的MATLAB仿真讲义(一、二)
数据通信原理实验的MATLAB仿真讲义MATLAB原意为“矩阵实验室—MA-TrixLABoratory”,它是目前控制界国际上最流行的软件,它除了传统的交互式编程之外,还提供了丰富可靠的矩阵运算、图形绘制、数据和图象处理、Windows编程等便利工具。
MATLAB还配备了大量工具箱,特别是还提供了仿真工具软件SIMULINK。
SIMULINK这一名字比较直观地表明了此软件的两个显著的功能:SIMU(仿真)与LINK(连接),亦即可以利用鼠标在模型窗口上“画”出所需的系统模型,然后利用SIMULINK提供的功能对控制系统进行仿真和线性化分析。
MATLAB在80年代一出现,首先是在控制界得到研究人员的瞩目。
随着MA T-LAB软件的不断完善,特别是仿真工具SIMULINK的出现,使MA TLAB的应用范围越来越广。
MATLAB的仿真环境(simulink)提供的系统模型库包括以下几个子模型库:Sources(输入源)、Sinks(输出源)、Discrete(离散时间系统)、Linear(线性环节)、Non-linear(非线性环节)、Connections(连接及接口)、Extras(其它环节)。
打开子模型库,你会发现每个模型库都包含许多个子模块,比如Sources模型库里含有阶跃函数、正弦函数、白噪声函数、MATLAB空间变量、信号发生器等子模块。
另外在Extras子模型库下还有一个BlockLibrary,集中了子模型库中最常用及其它常用的子模块,使用起来特别方便。
通信系统一般都可以建立数学模型,在数学模型中,主要包括乘法器、加法器、信号发生器、滤波器等,而这些在上述的simulink 系统模型库中一般都可找到,对于没有的模块(如伪随机信号发生器),可自己根据掌握的技术生成所需的子模块,随时调用。
这样就可根据数学模型,建立通信系统的仿真模型。
应用MA TLAB下的SIMULINK仿真工具可以很方便地进行通信系统仿真,利用SIMULINK仿真工具下的现有子模块进行仿真。
用MatLab仿真通信原理系列实验
用MatLab仿真通信原理系列实验一、引言通信原理是现代通信领域的基础理论,通过对通信原理的研究和仿真实验可以更好地理解通信系统的工作原理和性能特点。
MatLab作为一种强大的数学计算软件,被广泛应用于通信原理的仿真实验中。
本文将以MatLab为工具,介绍通信原理系列实验的仿真步骤和结果。
二、实验一:调制与解调1. 实验目的通过MatLab仿真,了解调制与解调的基本原理,并观察不同调制方式下的信号特征。
2. 实验步骤(1)生成基带信号:使用MatLab生成一个基带信号,可以是正弦波、方波或任意复杂的波形。
(2)调制:选择一种调制方式,如调幅(AM)、调频(FM)或相移键控(PSK),将基带信号调制到载波上。
(3)观察调制后的信号:绘制调制后的信号波形和频谱图,观察信号的频谱特性。
(4)解调:对调制后的信号进行解调,还原出原始的基带信号。
(5)观察解调后的信号:绘制解调后的信号波形和频谱图,与原始基带信号进行对比。
3. 实验结果通过MatLab仿真,可以得到不同调制方式下的信号波形和频谱图,观察到调制后信号的频谱特性和解调后信号的还原效果。
可以进一步分析不同调制方式的优缺点,为通信系统设计提供参考。
三、实验二:信道编码与解码1. 实验目的通过MatLab仿真,了解信道编码和解码的基本原理,并观察不同编码方式下的误码率性能。
2. 实验步骤(1)选择一种信道编码方式,如卷积码、纠错码等。
(2)生成随机比特序列:使用MatLab生成一组随机的比特序列作为输入。
(3)编码:将输入比特序列进行编码,生成编码后的比特序列。
(4)引入信道:模拟信道传输过程,引入噪声和干扰。
(5)解码:对接收到的信号进行解码,还原出原始的比特序列。
(6)计算误码率:比较解码后的比特序列与原始比特序列的差异,计算误码率。
3. 实验结果通过MatLab仿真,可以得到不同编码方式下的误码率曲线,观察不同信道编码方式对信号传输性能的影响。
现代通信原理_Matlab实验一
Ts = 1/fs;
% 采样间隔
T = Ts*N;
% 观察时间
df = 1/T;
% 频率间隔
f = (-N/2:N/2-1)*df;
S = fftshift(fft(s)*Ts);
时域综合函数myf2t
function [t,s] = myf2t(S,fs)
% 输入变量 S:信号频谱
%
fs:采样频率
g
(t
)
=
⎧1, ⎨⎩0,
0 ≤ t < τ < Ts 其他
, an 取值为
0、1
且等概出现,其波形和功
率谱密度如下图所示:
单极性归零码的功率谱密度不仅含有离散的直流分量以及连续谱(功率谱主瓣宽度
为),而且还包含离散的时钟分量及其奇次谐波分量。由于其功率谱密度中含有离散
的时钟分量,所以在数字通信系统的接收端可以从单极性归零码序列中利用窄带滤
% 码元长度 % 每个码元的抽样点数 % 抽样时间间隔 % 码元数 % 抽样频率
t = 0:dt:(N*N_sample-1)*dt; T = Ts*N*N_sample;
gt1 = ones(1,N_sample); % NRZ非归零波形
gt2 = ones(1,N_sample/2); % RZ归零波形
subplot(323) plot(t,[st2(1:length(t))]);grid axis([0 20 -1.5 1.5]) ylabel('单极性RZ波形'); subplot(324) plot(f2,10*log10(abs(st2f).^2/T)) % axis([-4 4 0 40]) ylabel('单极性RZ功率谱密度(dB/Hz)');
通信原理MATLAB仿真实验设计
3. 步骤 3 中,当调用函数 dft 时,输入参数中采样周期可以设为1s;
6
4. 画图时,时间和频率范围、过零点、幅度、周期等重要信息要标 识清楚。
7
实验四 模拟调制系统的 AM 调制仿真
预习要求:
图;(具体周期和幅度值见表 2,共 4 组数据)
表 2 方波周期和幅度
周期������
幅度
1 0.3 s
2.5
1 1s
2.5
3. 产 生 不 同 周 期 ������ 、 不 同 幅 度 ������ 的 三 角 波 信 号 ������ ������
������,
0 ������
,并利用 MATLAB 指令 fft 对其做傅立叶
1s
方波
幅度������
1
三角波
周期������
0.25 s
幅度������
1
4
实验说明:
1. 为了计算������ ������ ,函数 dft 需要以下输入参数: 输入信号序列������ ������ , ������ 0.1, ⋯ , ������ 1。注意:MATLAB 中,一维
数组或序列长度可以由指令 length 在函数内得到,因此无需将������
cos ������ ������ 图 3 DSB‐SC 调制器模型 2. 利用实验一中程序产生两个周期长度的正弦信号(频率������ 为100Hz, 初始相位������ 0); 3. 利用实验三中程序产生标准正态分布的噪声信号������ ������ ,并利用公 式������ ������ 10 ������ ������ 将������ ������ 转变为另一正态分布的噪声信号������ ������ , 其均值和方差分别为0和10 ; 4. 将������ ������ 叠加到信号������ ������ 上,从而生成信号������ ������ ������ ������ ������ ������ ,并 将其输入至 DSB‐SC 调制器中产生调制信号������ _ ������ ; 5. 利用实验四中函数 amdemod 解调������ _ ������ ,从而得到解调信号 ������ ������ ,比较调制器输入信号和解调输出信号并做图。
通信原理MATLAB仿真实验指导书V1.1
leansmall@
表 5 MATLAB 特殊运算 符号 : ; , () [] {} 5.MATLAB的一维、二维数组的寻访 表6 子数组访问与赋值常用的相关指令格式 指令格式 A(r,c) A(r,:) A(:,c) A(:) A(i) A(r,c)=Sa A(:)=D(:) 指令功能 数组A中r指定行、c指定列之元素组成的子数组 数组A中r指定行对应的所有列之元素组成的子数组 数组A中c指定列对应的所有行之元素组成的子数组 数组A中各列元素首尾相连组成的“一维长列”子数组 "一维长列"子数组中的第i个元素 数组A中r指定行、c指定列之元素组成的子数组的赋值 数组全元素赋值,保持A的行宽、列长不变,A、D两组元素 总合应相同 构成向量、矩阵 构成单元数组 功能说明示例 1:1:4;1:2:11 分隔行 分隔列 符号 . .. … % ! = 注释 调用操作 系统命令 用于赋值 功能说明 示例
4.MATLAB变量与运算符 变量命名规则如下: (1) 变量名可以由英语字母、数字和下划线组成
Leansmall Lin
第 3 页
2013-4-26
通信原理 Matlab 仿真实验指导书 V1.1
leansmall@
(2) 变量名应以英文字母开头 (3) 长度不大于 31 个 (4) 区分大小写 MATLAB中设置了一些特殊的变量与常量,列于下表。 表1 MATLAB的特殊变量与常量 变量名 ANS i或j pi eps realmax 功能说明 默认变量名,以应答 最近一次操作运算结果 虚数单位 圆周率 浮点数的相对误差 最大的正实数 变量名 realmin INF(inf) NAN(nan) nargin nargout 功能说明 最小的正实数 无穷大 不定值(0/0)
通信原理Matlab仿真实验报告
实验二1、用Matlab模拟图形A律解码⑴Matlab程序代码:①建立函数ADecode()function y=ADecode(code,n) codesize=size(code);cr_len=codesize(1);cl_len=codesize(2);ca=zeros(1,cl_len-1);for i=1:cr_lenca=code(i,2:n);s=0;for j=1:n-1s=s+ca(j)*2^(n-1-j);enda=code(i,1);y(i)=s*((-1)^(a+1)); endy=y/(2^(n-1));A=87.6;A1=1+log(A);for j=1:length(y)if(y(j)>=0)if(y(i)<=1/A1)y(j)=y(j)*A1/A;elsey(j)=exp(y(j)*A1-1/A);endelsetemp=-y(j);if(temp<=1/A1)y(j)=-temp*A1/A;elsey(j)=-exp(temp*A1-1)/A;endendend②建立函数APCM()function code=APCM(x,n)xmax=max(abs(x));x=x/xmax;xlen=length(x);y=zeros(1,xlen);A=87.6;A1=1+log(A);for i=1:xlenif x(i)>=0if x(i)<=1/Ay(i)=(A*x(i))/A1;elsey(i)=(1+log(A*x(i)))/A1;endelsex1=-x(i);if x1<=1/Ay(i)=-(A*x1)/A1;elsey(i)=-(1+log(A*x1))/A1;endendendy1=y*(2^(n-1)-1);y1=round(y1);code=zeros(length(y1),n); c2=zeros(1,n-1);for i=1:length(y1)if(y1(i)>0)c1=1;elsec1=0;y1(i)=-y1(i);endfor j=1:n-1r=rem(y1(i),2);y1(i)=(y1(i)-r)/2;c2(j)=r;endc2=fliplr(c2);code(i,:)=[c1 c2];实验三1、用Matlab模拟双极性归零码⑴ Matlab程序代码:function y=drz(x)t0=300;x=[1 0 0 1 1 0 0 0 0 1 0 1];t=0:1/t0:length(x);for i=1:length(x);if(x(i)==1)for j=1:t0/2y(t0/2*(2*i-2)+j)=1;y(t0/2*(2*i-1)+j)=0;endelsefor j=1:t0/2y(t0/2*(2*i-2)+j)=-1;y(t0/2*(2*i-1)+j)=0;endendendy=[y,x(i)];M=max(y);m=min(y); subplot(211)plot(t,y);grid on;axis([0,i,m-0.1,M+0.1]);title('1 0 0 1 1 0 0 0 0 1 0 1 ');⑵Matlab仿真结果:2、用Matlab产生2FSK信号⑴ Matlab程序代码:①建立函数fskdigital()function fskdigital(s,f1,f2) t=0:2*pi/99:2*pi;m1=[];c1=[];b1=[];for n=1:length(s)if s(n)==0;m=ones(1,100);c=sin(f2*t);b=zeros(1,100) else s(n)==1;m=ones(1,100);c=sin(f1*t);b=ones(1,100)endm1=[m1 m]; c1=[c1 c]; b1=[b1 b]; endfsk=c1.*m1;subplot(211);plot(b1,'r')title('原始信号');axis([0 100*length(s) -0.1 1.1]);grid on;subplot(212);plot(fsk)title('2FSK信号');⑵仿真结果:①三角波原图②用矩形波近似的冲击函数③分解后的三角波④经低通还原的三角波。
通信原理实验报告-含MATLAB程序
通信原理实验报告实验一 数字基带传输实验一、实验目的1、提高独立学习的能力;2、培养发现问题、解决问题和分析问题的能力;3、学习Matlab 的使用;4、掌握基带数字传输系统的仿真方法;5、熟悉基带传输系统的基本结构;6、掌握带限信道的仿真以及性能分析;7、通过观测眼图和星座图判断信号的传输质量。
二、实验原理1. 带限信道的基带系统模型(连续域分析)输入符号序列 ————{al }发送信号 ————10()()L l d t al t lTb δ-==-∑ Tb 是比特周期,二进制码元周期发送滤波器 ————GT(w)或GT (t )发送滤波器输出 ————1100()()*()()*()()L L l b T l T b T l l x t d t t a t lT g t a g t lT g δ--====-=-∑∑ 信道输出信号或接收滤波器输入信号()()()y t x t n t =+接收滤波器 ()R G ω或()R G f接收滤波器输出信号10()()*()()*()*()()*()()()L R T R R l b R l r t y t g t d t g t g t n t g t a g t lT n t -===+=-+∑其中2()()()j ft T R g t G f G f e df π∞-∞=⎰如果位同步理想,则抽样时刻为b l T ⋅ 01l L =-:判决为 '{}l a2. 升余弦滚降滤波器1()||2s sH f T f T α-=≤; ()H f =111[1cos (||)]||2222s s s s sT T f f T T T παααα--++-<≤ ()H f = 10||2s f T α+>式中α 称为滚降系数,取值为0 <α ≤1, T s 是常数。
α = 0时,带宽为1/ 2T s Hz ;α =1时, 带宽为1/T s Hz 。
用MatLab仿真通信原理系列实验
实验三:低通信号的抽样定理…………………………….………….16
第四章小结……………………………………………...18
致谢………………………………………………………18
参考文献…………………………………………………18
摘要:本毕业设计用Matlab中的建模仿真工具Simulink对通信原理实验进行仿真。作为系列实验的第一部分,包括模拟信号的线性调制解调(AM、DSB、SSB)过程、扰码与解扰实验和低通信号的抽样定理实验。论文中讲述了Matlab的基础知识、Simulink仿真操作方法以及在通信系统中的应用,对被仿真实验的基本原理也进行了简要介绍。通过本设计对构造通信原理虚拟实验室这一课题进行了初步的探索。
MATLAB系统共有5个主要部分构成:
1)MATLAB语言;
2)MATLAB工作环境;
3)MATLAB数学函数库;
4)MATLAB图形处理系统;
5)MATLAB应用程序接口。
1.MATLAB语言
MATLAB语言是一种面向对象的高级语言,正如前面所述,它以矩阵作为最基本的数据结构。MATLAB语言由自己独特的数据结构、输入输出功能、流程控制语句和函数。MATLAB在工程计算方面具有其他高级语言无法比拟的优越性,它集计算、数据可视化、程序设计于一体,并能将数学问题和解决方案以用户熟悉的数学符号表示出来。
(1)实现了可视化建模,用户通过简单的鼠标操作就可建立起直观的系统模型,并进行仿真;
(2)实现了多工作环境间文件互用和数据交换,如Simulink与MATLAB、FORTRAN以及C的工作环境的信息交换都可以方便的实现;
(3)把理论研究和工程实现有机地结合在一起。
通信工程MATLAB上机实验指导书
MATLAB实验指导书张龙河北工程大学信电学院通信工程系2012年12月实验一熟悉MATLAB环境[实验目的]1.熟悉MATLAB主界面,学会常用的窗口的操作2.学会简单的矩阵输入3.熟悉MATLAB基本语句的使用、矩阵与向量的基本运算[实验原理]1. 用户第一次使用MATLAB时,可通过demo命令,启动MATLAB的演试程序,领略MATLAB所提供的强大的运算与绘图功能。
也可以键入help进行进一步了解。
2.MATLAB 是以矩阵作为基本编程单元的一种程序设计语言。
它提供了各种矩阵的运算与操作,并有较强的绘图功能。
在MATLAB中输入矩阵最方便的的方式是直接输入矩阵的元素,其方法为:1)用中括号[ ]把所有矩阵元素括起来;2)同一行的不同数据元素之间用空格或逗号间隔;3)用分号(;)指定一行结束;4)也可以分成几行进行输入,用回车符代替分号;5)矩阵元素可以是任何matlab表达式(系统将自动计算结果),可以是实数,也可以是复数,复数可用特殊函数i,j 输入。
3.MATLAB语言最基本的赋值语句结构为:变量=表达式。
表达式由操作符或其它字符,函数和变量名组成,表达式的结果为一个矩阵,显示在屏幕上,同时输送到一个变量(ans为默认)中并存放于workspace工作空间中以备调用。
[实验内容]1.(1)用空格或逗号输入矩阵A=[1 2 3;4 5 6;7 8 9] B=[9,8,7;6,5,4;3,2,1];C=[4,5,6;7,8,9;1,2,3];或A=[1,2,3;4,5,6;7,8,9](2)试用回车代替A中的分号,观察输出结果。
要求:总结矩阵的输入2.用edit或选择File|new菜单中的M-file进入编辑器,输入:Base=[9,8,7;6,5,4;3,2,1];Base_info=Base+1保存为Base.m文件,并通过Debug中的run命令(或F5)运行之,观察有何异常现象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一
设计任务:
用MatLib仿真一个BFSK通信系统,基本参数:
1)fc=1000Hz;
2)Rb=100bps;
3)信息序列:“Hello world”的ASCII
实验与报告基本要求:
1)Matlab程序,要点旁注(可打印后手写);
2)绘出信号波形,绘出信号PSD;
3)给出解调后的信息序列;
4)将信息重复3遍以上,FSK信号保存为WAV文件格式,使用音频播放,聆听;M文件:
wave.m
function[t,mt]=wave(m,dt,fs)
l=length(m);
mt=[];
ddt=1/fs;
n=floor(dt*fs);
m_add=ones(1,n);
for i=1:l
if(m(i))
mt=[mt,m(i),m_add];
else
mt=[mt,m(i),m_add*0];
end
t=(1:((n+1)*l))*ddt;
end
my_filter.m
function[num,den]=my_filter(wp,ws,ap,as)
if nargin<4
as=15;
end
if nargin<4
ap=3;
end
[n,wn]=buttord(wp,ws,ap,as);
[num,den]=butter(n,wn);
end
代码:
f0=800;%‘0’码载波频率
f1=1200;%‘1’码载波频率
fs=4000;%采样频率
Rb=100;%比特率
dt=1/Rb;%一个比特发送时间
A0=2;%调制幅度
A1=2;%相干解调幅度
miu=0;sigma=0.3;%miu:高斯白噪声均值,sigma:高斯白噪声均方差
str='Hello world';%信号字符串
m_dec=abs(str);%将信号字符串转换成ASCII码(十进制) m_bin=dec2bin(m_dec,8);
m_bin=abs(m_bin)-48;%将十进制转换成8比特二进制矩阵
m=[];
for i=1:size(m_bin,1)
m=[m,m_bin(i,:)];
end%将二进制转换成行向量
[t,m]=wave(m,dt,fs);%对信号采样
mt_f1=m.*cos(2*pi*f1*t)*A0;%频率f1调制
mt_f0=(~m).*cos(2*pi*f0*t)*A0;%频率f0调制
mt=mt_f1+mt_f0;%发送信号
l=length(mt);
subplot(2,1,1);plot(t,mt);
grid on;xlabel('t/s');title('m(t)');%发送信号波形subplot(2,1,2);periodogram(mt,[],l,fs);grid on;%发送信号PSD
nt=normrnd(miu,sigma,1,l);%噪声
st=mt+nt;%接收信号
wp0=[0.65,1.05]/2;ws0=[0.7,0.9]/2;
[num0,den0]=my_filter(wp0,ws0);%产生650HZ<f<1050HZ带通滤波器
st_f0=filter(num0,den0,st);%过滤噪声
wp0=0.01;ws0=0.1;
[num0,den0]=my_filter(wp0,ws0);%产生20HZ<f<200HZ低通滤波器
st_f0=filter(num0,den0,st_f0.*cos(2*pi*f0*t)*A1);%相干解调并通过低通滤波器
wp1=[1.05,1.35]/2;ws1=[1.1,1.3]/2;
[num1,den1]=my_filter(wp1,ws1);%产生1050HZ<f<1350HZ 带通滤波器
st_f1=filter(num1,den1,st);%过滤噪声
st_f1=filter(num0,den0,st_f1.*cos(2*pi*f1*t)*A1);%相干解调并通过低通滤波器
figure(2);
subplot(2,1,1);
plot(t,st_f0);grid on;
xlabel('t/s');title('st_f0');%f0解调波形
subplot(2,1,2);
plot(t,st_f1);grid on;
xlabel('t/s');title('st_f1');%f1解调波形
m_r=(st_f1>st_f0);%判决输出
figure(3);
plot(t,m_r,'r');grid on;
xlabel('t/s'),title('m_r');%m_r波形
wavwrite(repmat(m_r,1,5),'hello.wav');
波形:
1.发送信号及其PSD:
2.解调后f0,f1信号
3.判决后波形:。