MATLAB完成通信系统仿真实例
matlab通信系统仿真
通信系统基于(15,11)汉明编码的matlab仿真clearm=4;n=2^m-1;k=11;msg1=randint(1,6000*k,[0,1])%产生信息序列code0=vec2mat(msg1,k);code1=encode(msg1,n,k,'hamming/binary');%进行汉明纠错编码code2=reshape(code1,90,1000)';code3=zeros(1000,90);%设置零矩阵,以便储存交织后的序列for i=1:1000temp=code2(i,:);temp1=reshape(temp,15,6);%按15*6交织code3(i,:)=reshape(temp1',1,90);end[row,cloums]=size(code3);code4=code3';[row1,cloums1]=size(code4);code5=reshape(code4,6,15000)'; %将交织后的序列转换为6行,15000列矩阵msg2=zeros(15000,6);for j=2:6,msg2(:,j)=xor(code5(:,j),code5(:,(j-1)));endmsg2(:,1)=code5(:,1);%此时得到的msg2为gray映射后的信号序列code8=msg2';%转置,便于比特符号转换A=[32,16,8,4,2,1]; %为比特符合转换所设的序列msg3=A*code8;%生成符号序列msg4=qammod(msg3,64);%将符号序列进行64QAM调制[row2,cloums2]=size(msg4);dB=0:1:20;for k=1:length(dB),snr=10.^(dB(k)./10); %信噪比sgma=sqrt(63./(6*snr));%标准差b1=real(msg4)+sgma*randn(row2,cloums2);%分路叠加噪声b2=imag(msg4)+sgma*randn(row2,cloums2);%分路叠加噪声rx=complex(b1,b2);%————————量化判决——————————%for m=1:row2,for n=1:cloums2,if ((b1(m,n)<-6))b11(m,n)=-7;elseif ((b1(m,n)>=-6)&(b1(m,n)<-4))b11(m,n)=-5;elseif ((b1(m,n)>=-4)&(b1(m,n)<-2))b11(m,n)=-3;elseif ((b1(m,n)>=-2)&(b1(m,n)<0))b11(m,n)=-1;elseif ((b1(m,n)>=0)&(b1(m,n)<2))b11(m,n)=1;elseif ((b1(m,n)>=2)&(b1(m,n)<4))b11(m,n)=3;elseif ((b1(m,n)>=4)&(b1(m,n)<6))b11(m,n)=5;elseif ((b1(m,n)>=6))b11(m,n)=7;endif ((b2(m,n)<-6))b22(m,n)=-7;elseif ((b2(m,n)>=-6)&(b2(m,n)<-4))b22(m,n)=-5;elseif ((b2(m,n)>=-4)&(b2(m,n)<-2))b22(m,n)=-3;elseif ((b2(m,n)>=-2)&(b2(m,n)<0))b22(m,n)=-1;elseif ((b2(m,n)>=0)&(b2(m,n)<2))b22(m,n)=1;elseif ((b2(m,n)>=2)&(b2(m,n)<4))b22(m,n)=3;elseif ((b2(m,n)>=4)&(b2(m,n)<6))b22(m,n)=5;elseif ((b2(m,n)>=6))b22(m,n)=7;endendend%————————量化判决——————————% rx1=complex(b11,b22);msg5=qamdemod(rx1,64);%qam解调code8=msg5';msg6=zeros(15000,6);msg6=de2bi(code8,6,'left-msb');[row8,cloums8]=size(msg6);code9=zeros(15000,6);code9(:,1)=msg6(:,1);for j=2:6code9(:,j)=xor(msg6(:,j),code9(:,(j-1)));%解格雷码end[row9,cloums9]=size(code9);code10=reshape(code9',90,1000)';code11=zeros(1000,90);for i=1:1000temp2=code10(i,:);temp3=reshape(temp2,6,15);code11(i,:)=reshape(temp3',1,90); %解交织endcode12=reshape(code11',15,6000)';[row12,cloums12]=size(code12);code13=decode(code12,15,11,'hamming/fmt,prim_poly');%解汉明码[num,ratio]=biterr(code0,code13); %计算点的误差数量和误码率pe(k )=ratioendsemilogy(dB,pe,'*');xlabel('dB');ylabel('biterror rate');legend('仿真误码率/有信道编码');。
matlab 通信仿真案例
matlab 通信仿真案例
在MATLAB中,通信仿真是一个常见的应用领域,可以用于模拟
和分析数字通信系统的性能。
下面我将从多个角度介绍几个常见的
通信仿真案例。
1. OFDM系统仿真,OFDM(正交频分复用)是一种常见的多载
波调制技术,用于高速数据传输。
你可以使用MATLAB来建立一个基
本的OFDM系统仿真模型,包括信道估计、均衡和解调等模块。
通过
仿真可以分析系统在不同信噪比下的误码率性能,优化系统参数以
及算法设计。
2. 无线通信系统仿真,你可以使用MATLAB建立一个简单的无
线通信系统仿真模型,包括传输信道建模、调制解调、信道编码、
多天线技术等。
通过仿真可以评估系统的覆盖范围、传输速率、抗
干扰能力等性能指标。
3. MIMO系统仿真,MIMO(多输入多输出)技术在无线通信中
得到了广泛应用。
你可以使用MATLAB建立一个MIMO系统仿真模型,包括空间多路复用、信道估计、预编码等。
通过仿真可以分析系统
的信道容量、波束赋形技术对系统性能的影响等。
4. LTE系统仿真,LTE(长期演进)是目前移动通信领域的主流技术之一。
你可以使用MATLAB建立一个LTE系统仿真模型,包括物理层信号处理、上下行链路传输、信道编码解码等。
通过仿真可以评估系统的覆盖范围、传输速率、干扰抑制能力等性能指标。
以上是一些常见的通信仿真案例,通过MATLAB你可以方便地建立仿真模型,分析系统性能,并优化系统设计。
希望这些案例能够帮助到你。
matlab通信仿真实例
matlab通信仿真实例通信仿真在工程领域中具有广泛的应用,MATLAB作为一种强大的数学建模工具,能够帮助工程师进行通信系统的仿真设计和分析。
在本文中,我们将通过一个具体的MATLAB通信仿真实例来展示如何使用MATLAB进行通信系统的建模和仿真。
首先,我们需要定义一个简单的通信系统,假设我们要设计一个基于QPSK调制的数字通信系统。
我们可以按照以下步骤进行仿真实例的设计:1. 生成随机比特序列:首先我们需要生成一组随机的比特序列作为发送端的输入。
我们可以使用MATLAB的randi函数来生成随机的二进制比特序列。
2. QPSK调制:接下来,我们需要将生成的二进制比特序列进行QPSK调制,将比特序列映射到QPSK星座图上的相应点。
我们可以使用MATLAB的qammod 函数来进行QPSK调制。
3. 添加高斯噪声:在通信信道中,往往会存在各种噪声的干扰,为了模拟通信信道的实际情况,我们需要在信号上添加高斯噪声。
我们可以使用MATLAB的awgn函数来添加高斯噪声。
4. QPSK解调:接收端接收到信号后,需要进行QPSK解调,将接收到的信号映射回比特序列。
我们可以使用MATLAB的qamdemod函数来进行QPSK解调。
5. 比特误码率计算:最后,我们可以计算仿真的比特误码率(BER),用来评估通信系统的性能。
我们可以通过比较发送端和接收端的比特序列来计算比特误码率。
通过以上步骤,我们就可以完成一个基于QPSK调制的数字通信系统的MATLAB仿真实例。
在实际的通信系统设计中,我们可以根据具体的需求和系统参数进行更加复杂的仿真设计,例如考虑信道编码、信道估计等因素,以更加准确地评估通信系统的性能。
MATLAB的强大数学建模和仿真功能,为工程师提供了一个非常有用的工具,可以帮助他们设计和分析各种通信系统。
通过不断的实践和学习,工程师可以更加熟练地运用MATLAB进行通信系统的仿真设计,为通信系统的性能优化提供有力的支持。
MATLAB实现通信系统仿真实例
补充内容:模拟调制系统的MATLAB 仿真1。
抽样定理为了用实验的手段对连续信号分析,需要先对信号进行抽样(时间上的离散化),把连续数据转变为离散数据分析。
抽样(时间离散化)是模拟信号数字化的第一步.Nyquist 抽样定律:要无失真地恢复出抽样前的信号,要求抽样频率要大于等于两倍基带信号带宽.抽样定理建立了模拟信号和离散信号之间的关系,在Matlab 中对模拟信号的实验仿真都是通过先抽样,转变成离散信号,然后用该离散信号近似替代原来的模拟信号进行分析的。
【例1】用图形表示DSB 调制波形)4cos()2cos(t t y ππ= 及其包络线。
clf%%计算抽样时间间隔fh=1;%%调制信号带宽(Hz )fs=100*fh ;%%一般选取的抽样频率要远大于基带信号频率,即抽样时间间隔要尽可能短. ts=1/fs ;%%根据抽样时间间隔进行抽样,并计算出信号和包络t=(0:ts:pi/2)';%抽样时间间隔要足够小,要满足抽样定理.envelop=cos (2*pi *t);%%DSB 信号包络y=cos(2*pi *t).*cos(4*pi *t );%已调信号%画出已调信号包络线plot (t ,envelop ,'r :','LineWidth',3);hold onplot(t ,-envelop,'r:’,’LineWidth',3);%画出已调信号波形plot(t ,y,’b','LineWidth ’,3);axis([0,pi/2,-1,1])%hold off%xlabel ('t ’);%写出图例【例2】用图形表示DSB 调制波形)6cos()2cos(t t y ππ= 及其包络线。
clf%%计算抽样时间间隔fh=1;%%调制信号带宽(Hz )fs=100*fh;%抽样时间间隔要足够小,要满足抽样定理。
基于MATLAB的通信系统的仿真报告参考例文
摘要Simulink是Mathworks公司推出的基于Matlab平台的著名仿真环境Simulin作为一种专业和功能强大且操作简单的仿真工具,目前已被越来越多的工程技术人员所青睐,它搭建积木式的建模仿真方式既简单又直观,而且已经在各个领域得到了广泛的应用。
本文主要是以simulink为基础平台,对2ASK、2FSK、2PSK信号的仿真。
文章第一章内容是对simulink的简单介绍和通信技术的目前发展和未来展望;第二章是对2ASK、2FSK和2PSK信号调制及解调原理的详细说明;第三章是本文的主体也是这个课题所要表现的主要内容,第三章是2ASK、2FSK和2PSK信号的仿真部分,调制和解调都是simulink建模的的方法,在解调部分各信号都是采用相干解调的方法,而且在解调的过程中都对整个系统的误码率在display模块中有所显示本文的主要目的是对simulink的熟悉和对数字通信理论的更加深化和理解。
关键词:2ASK、2FSK、2PSK,simulink,调制,相干解调目录第一章绪论 (31)1.1 MATLAB/Smulink的简介 (31)1.2 通信发展简史........................................ 错误!未定义书签。
1 1.3 通信技术的现状和发展趋势............................ 错误!未定义书签。
4 第二章 2ASK、2FSK、2PSK和2DPSK的基本原理和实现....... 错误!未定义书签。
7 2.1 2ASK的基本原理和调制解调实现...................... 错误!未定义书签。
8 2.2 2FSK的基本原理和调制解调实现..................... 错误!未定义书签。
11 2.3 2PSK的基本原理和调制解调实现.................... 错误!未定义书签。
14 2. 2DPSK的基本原理和调制解调实现.................... 错误!未定义书签。
matlab通信仿真实例
matlab通信仿真实例在Matlab中进行通信系统的仿真,可以涉及到多种不同的通信技术和协议,包括调制解调、信道编码、多址接入等。
以下以OFDM系统为例,介绍Matlab 中通信仿真的实例。
OFDM(正交频分复用)是一种常用于现代通信系统中的技术,它将高速数据流分割成多个较低速的子流,并将每个子流分配到不同的子载波上。
优点是能够抵抗多径效应和频率选择性衰落,并提供高数据速率。
首先,我们需要创建一个包含OFDM系统参数的结构体。
例如:ofdmParam.M = 16; % 子载波数量ofdmParam.K = 4; % 用于混合多路复用的用户数量ofdmParam.N = ofdmParam.M * ofdmParam.K; % 总子载波数量ofdmParam.CP = 16; % 循环前缀长度接下来,我们可以生成用于OFDM仿真的数据流。
例如,我们可以使用随机整数生成器生成一系列整数,并将其转换为复数形式的调制符号:data = randi([0, ofdmParam.M-1], 1, ofdmParam.N);dataMod = qammod(data, ofdmParam.M);然后,我们可以创建一个包含OFDM信号的函数。
在OFDM系统中,生成的数据符号将分配到不同的子载波上,然后在时域中通过插入循环前缀进行叠加:function[ofdmSignal] = createOFDMSignal(dataMod, ofdmParam) ofdmSignal = [];for k = 0:ofdmParam.K-1% 提取相应的数据符号,并进行IFFTofdmData =ifft(dataMod(k*ofdmParam.M+1:(k+1)*ofdmParam.M));% 添加循环前缀ofdmDataWithCP = [ofdmData(end-ofdmParam.CP+1:end), ofdmData];% 将OFDM符号添加到OFDM信号中ofdmSignal = [ofdmSignal, ofdmDataWithCP];endend将OFDM信号传输到信道中,我们可以使用加性高斯白噪声(AWGN)信道模型来模拟实际通信环境:EbNo = 10; % 信噪比snr =10*log10(ofdmParam.N*ofdmParam.M/(ofdmParam.N*ofdmParam.M+1 )*(10^(EbNo/10)));ofdmSignalNoisy = awgn(ofdmSignal, snr, 'measured');最后,我们可以对接收到的OFDM信号进行解调和信号恢复。
通信系统MATLAB仿真实验2010FALL
通信系统MATLAB 仿真实验实验一 模拟调制系统实验目的:● 熟悉matlab 仿真环境。
● 掌握基于matlab 的通信系统建模方法。
●验证AM 、DSB 、SSB 、FM 系统的调制解调方法。
实验内容:1. 建立AM 信号的发送端模型,分别用包络检波法和相干解调法解调AM 信号。
2. 搭建DSB 系统调制解调模型。
3. 搭建SSB 系统调制解调模型。
4. 搭建FM 系统调制解调模型。
1 AM 信号调制的调制解调:1.1 AM 信号调制的调制AM 调制器模型如图1:图1-1AM 调制器原理框图s AM (t)=[A 0+m(t)]cos2πf c t (1-1)设调制信号为单一频率的正弦波,频率f =10Hz ,载波频率为100Hz 。
matlab 代码如下:A0=2; %直流偏置电压c S Afm=10; % 信号10Hz fc=100; %载波频率100Hzfs=800; %取样频率800Hz,采样频率选取原则是满足系统中可能出现的信号最高频率的2倍以上。
t=0:1/fs:0.1; %仿真时间长度0.1s mt=sin(2*pi*fm*t);%基带信号,可选多音调制比如mt=sin(2*pi*fm*ts)+ cos(2*pi*3*fm*ts) s_am=(mt+A0).*sin(2*pi*fc*t); 观察调制信号波形plot(t,s_am)观察调制信号频谱periodogram(s_am,[],'twosided',[],1/ts);%有关此函数的用法参考matlab 随机帮助文档 思考题:看到的谱线如何?如何观察到更清晰的谱线?1.2 信号在信道中传输仅考虑加性高斯白噪声信道。
信号在高斯白噪声信道中传输时会叠加高斯白噪声,这里介绍两种叠加高斯白噪声的方法。
利用randn 或wgn 函数产生与信号长度相同的白噪声序列函数randn (1,N)产生1行N 列互不相关的、均值为零、标准差为1的高斯随机数,N 等于输入信号的长度,也意味着采样频率与信号的采样频率相同,如果信号的采样频率为f s ,则噪声单边功率谱密度snnnf B N 2202σσ==,其中B n =f s /2为噪声带宽,这里需要区别所加噪声功率与解调器输入噪声功率.解调器输入噪声功率是经过带通滤波以后的噪声功率N i =N 0B,B 为信号带宽,B<Bn.噪声功率就是其方差,改变噪声功率可以通过给所有的采样值乘以一个系数(标准差来完成),例如:产生方差为1的高斯噪声:x= randn (1,N); 产生方差为4的高斯噪声:x=2* randn (1,N); %可以利用matlab 函数var(x)来验证x 的方差. 利用Matlab 提供的函数awgn awgn 函数的用法为: y = awgn(x,snr) ;x.为输入信号, snr 为信噪比,单位是 dB. 如果 x 是复数, awgn 加复噪声. 这种用法假定 x 的功率是 0 dBW.(1w)信号功率x (单位w )与dBW 的关系是:dBW=10log 10(x/1w). y = awgn(x,snr,sigpower) ;x,snr 同上, sigpower 指定信号功率,单位是dBW. y = awgn(x,snr,'measured') ; 让Matlab 自动测量信号功率。
MATLAB通信系统仿真实验报告
MATLAB通信系统仿真实验报告实验一、MATLAB的基本使用与数学运算目的:学习MATLAB的基本操作,实现简单的数学运算程序。
内容:1-1 要求在闭区间[0,2π]上产生具有10个等间距采样点的一维数组。
试用两种不同的指令实现。
运行代码:x=[0:2*pi/9:2*pi]运行结果:1-2 用M文件建立大矩阵xx=[ 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.91.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.92.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.93.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9]代码:x=[ 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.91.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.92.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.93.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9]m_mat运行结果:1-3已知A=[5,6;7,8],B=[9,10;11,12],试用MATLAB分别计算A+B,A*B,A.*B,A^3,A.^3,A/B,A\B.代码:A=[5 6;7 8] B=[9 10;11 12] x1=A+B X2=A-B X3=A*B X4=A.*B X5=A^3 X6=A.^3 X7=A/B X8=A\B运行结果:1-4任意建立矩阵A,然后找出在[10,20]区间的元素位置。
程序代码及运行结果:代码:A=[12 52 22 14 17;11 10 24 03 0;55 23 15 86 5 ] c=A>=10&A<=20运行结果:1-5 总结:实验过程中,因为对软件太过生疏遇到了些许困难,不过最后通过查书与同学交流都解决了。
例如第二题中,将文件保存在了D盘,而导致频频出错,最后发现必须保存在MATLAB文件之下才可以。
实验一 模拟通信的MATLAB仿真
实验一 模拟通信的MATLAB 仿真姓名:左立刚 学号:031040522简要说明:实验报告注意包括AM ,DSB ,SSB ,VSB ,FM 五种调制与解调方式的实验原理,程序流程图,程序运行波形图,simulink 仿真模型及波形,心得体会,最后在附录中给出了m 语言的源程序代码。
一.实验原理1.幅度调制(AM )幅度调制(AM )是指用调制信号去控制高频载波的幅度,使其随调制信号呈线性变化的过程。
AM 信号的数学模型如图3-1所示。
图2-1 AM 信号的数学模型为了分析问题的方便,令δ=0,1.1 AM 信号的时域和频域表达式()t S AM=[A+m ()t ]cos t c ω (2-1)()t S AM =A 0π[()()ωωωωδC C ++-]+()()[]ωωωωc c M M ++-21(2-2)AM 信号的带宽2=BAMfH(2-3)式中,fH为调制信号的最高频率。
2.1.3 AM 信号的功率P AM 与调制效率ηAMPAM=()22220t m A+=PPmc+(2-4)式中,P C=2A为不携带信息的载波功率;()22t m P m=为携带信息的边带功率。
()()t t m A m PPAMCAM222+==η(2-5) AM 调制的优点是可用包络检波法解调,不需要本地同步载波信号,设备简单。
AM 调制的最大缺点是调制效率低。
2.2、双边带调制(DSB )如果将在AM 信号中载波抑制,只需在图3-1中将直流 A去掉,即可输出抑制载波双边带信号。
2.2.1 DSB 信号的时域和频域表达式()()t t m t c DSB S ωcos = (2-6)()()()[]ωωωωωCCDSB M M S ++-=21 (2-7)DSB 信号的带宽fBBHAMDSB2==(2-8)DSB 信号的功率及调制效率由于不再包含载波成分,因此,DSB 信号的功率就等于边带功率,是调制信号功率的一半,即()()t t m P S PC DSB DSB2221===(2-9) 显然,DSB 信号的调制效率为100%。
matlab与通信系统仿真程序及图
实验一2:for i=1:50,j=1:50;A(i,j)=i+j-1;endC=flipud(A),B=fliplr(A),A(1:10,1:10)=zeros;D=A3:clear;a=255*rand(50);disp(a),a(find(a<128))=0;a(find(a>128))=255;w=a;disp(w)实验二:1:(1)clear;n=0:23;N=12;y1=sin(2*4*pi*n/N);y2=sin(2*5*pi*n/N);y3=sin(2*7*pi*n/N);y4=sin(2*10*pi*n/N);plot(n,y1,'+r-',n,y2,'-.',n,y3,'k-',n,y4,'*g-');axis([0 25 -1 2 ]);xlabel('横轴n');ylabel('纵轴y');text(0.8,0.9,'y1');text(19.6,0.9,'y2');text(14,0.9,'y3');text(5,0.9,'y4');title('plot tu xing');legend('y1=sin(2*4*pi*n/N)','y2=sin(2*5*pi*n/N)','y3=sin(2*7*pi*n/N)','y4=sin(2*10*pi*n/N)')(2)clear;n=0:23;N=12;y1=sin(2*4*pi*n/N);y2=sin(2*5*pi*n/N);y3=sin(2*7*pi*n/N);y4=sin(2*10*pi*n/N);stem(n,y1,'+r-');hold on;stem(n,y2,'b-');hold on;stem(n,y3,'k-');hold on;stem(n,y4,'*g-');axis([0,25,-2,4]);xlabel('横轴n');ylabel('纵轴y');text(0.8,1.2,'y1');text(3,1.4,'y2');text(14,1.2,'y3');text(10.9,1.3,'y4');title('n from 0 to 23');legend('y1=sin(2*4*pi*n/N)','y2=sin(2*5*pi*n/N)','y3=sin(2*7*pi*n/N)','y4=sin(2*10*pi*n/N)') 2:clear all;N=input('input N=');T=1;fs=1/T;N_sample=128;dt=1/N_sample;t=0:dt:10*T-dt;n=-N:N;Fn=(-1/2)*sinc(n/2).*exp(-j*n*pi/2);Fn(N+1)=0;ft=zeros(1,length(t));for m=-N:N;ft=ft+ Fn(m+N+1)*exp(j*m*pi*2*fs*t);endplot(t,ft);legend('时域曲线ft=ft+ Fn(m+N+1)*exp(j*m*pi*2*fs*t)',4)3:N_sample=128;dt=1/N_sample;t=0:dt:1-dt;st=[ones(1,N_sample/2),-ones(1,N_sample/2)];subplot(311);plot(t,st);axis([0 1 -2 2]);xlabel('t');ylabel('s(t)'); subplot(312);[f,sf]=T2F(t,st);plot(f,abs(sf));hold on;axis([-10 10 0 1]);xlabel('f');ylabel('|S(f)|');sff=(-1/2)*exp(-j*f*pi/2).*sinc(f/2);plot(f,abs(sff));[t,st]=F2T(f,sf);subplot(313);axis([0 1 -2 2]);xlabel('t');ylabel('恢复的s(t)');plot(t,st)子函数:(1):function[t,st]=F2T(f,sf)df=f(2)-f(1);Fmx=f(end)-f(1)+df;dt=1/Fmx;N=length(sf);T=dt*N;t=0:dt:T-dt;sff=fftshift(sf);st=Fmx*ifft(sff);(2):function[f,sf]=T2F(t,st)dt=t(2)-t(1);T=t(end);df=1/T;N=length(st);f=-N/2*df:df:N/2*df-df;sf=fft(st);sf=T/N*fftshift(sf);2图:M=4 M=5M=7 M=10M=4 M=5M=7 M=10N=10 N=10002468100246810实验三:1.(2)clear;p=2;N=5000;u=randn(5,4);c=sqrt(p);u=u*c;power_u=var(u);subplot(211)plot(u(1:20));grid on;ylabel('u(n)');xlabel('n');subplot(212)hist(u,50);grid on;ylabel('histogram of u(n)');2:clear all;N=500;disounce=(sign(rand(1,N)-0.5+eps)+1)/2; n=8;temp1=ones(1,n);temp0=zeros(1,n);new_disounce=[];for i=1:length(disounce)if disounce(i)==0new_disounce=[new_disounce temp0];elsenew_disounce=[new_disounce temp1];endendT=0.01;t=0:T/n:T/n*(length(new_disounce)-1);subplot(211);plot(t,new_disounce)axis([min(t)-0.1,max(t)+0.1,min(new_disounce)-0.1,max(new_disounce)+0.1]) y=new_disounce;Nf=length(t);Y=fft(y,Nf);Pyy=abs(Y).^2/Nf;dt=t(2)-t(1);df=1/dt;f=df*(0:(Nf-1)/2)/Nf;subplot(212);plot(f,10*log10(Pyy(1:((Nf-1)/2+1))));title('功率谱密度');xlabel('频率(HZ)');grid3:clear all;SNRindB1=0:1:12;SNRindB2=0:0.01:12;for i=1:length(SNRindB1)smld_err_prb(i)= exa0308_Fun_singlepe(SNRindB1(i));endsemilogy(SNRindB1,smld_err_prb,'r*');for i=1:length(SNRindB2)SNR=10^(SNRindB2(i)/10);theo_err_prb(i)=(1/2)*erfc(sqrt(SNR/2));endhold on;semilogy(SNRindB2,theo_err_prb);grid on子函数:function [p]=exa0308_Fun_singlepe(snr_in_dB)E=1;SNR=10^(snr_in_dB/10);sgma=E/sqrt(SNR*2);N=10000;dsource=(sign(rand(1,N)-0.5+eps)+1)/2;numoferr=0;for i=1:Nif (dsource(i)==0)r=-E+sgma*randn;elser=E+sgma*randn;endif(r<0.5*E)decis=0;elsedecis=1;endif (decis~=dsource(i)) numoferr=numoferr+1; end end p=numoferr/N;:实验3的图 1:>> x=2*rand(5,4) x =0.7375 1.9921 0.9260 0.5703 1.3593 1.8842 0.2846 1.5663 0.0472 1.6797 0.9457 1.9128 0.8051 0.0293 0.9237 0.82740.8319 1.4452 1.7069 0.359802468101214161820-4-2024u (n )nu =-1.2765 1.1282 0.4296 -1.4450 -1.3768 0.7019 1.3848 -3.8243 -1.9091 -1.3563 1.7813 -2.9299 -0.8431 0.1011 0.4232 0.9075 0.4459 0.3491 -1.6545 0.89682:0.20.40.60.811.21.41.61.820.51050100150200250300350400-400-200200功率谱密度频率(HZ)3:0246810121010101010100。
Matlab通信系统建模与仿真例题源代码-第五章
% ch5example2prg1.mSNR_in_dB=-10:2:30;SNR_in=10.^(SNR_in_dB./10); % 信道信噪比m_a=0.3; % 调制度P=0.5+(m_a^2)/4; % 信号功率for k=1:length(SNR_in)sigma2=P/SNR_in(k); % 计算信道噪声方差并送入仿真模型sim('ch5example2.mdl');% 执行仿真SNRdemod(k,:)=SNR_out; % 记录仿真结果endplot(SNR_in_dB, SNRdemod);xlabel('输入信噪比dB');ylabel('解调输出信噪比dB');legend('包络检波','相干解调');% ch5example7prog1.mclear;Fs=10000; % 仿真的采样率t=1/Fs:1/Fs:1; % 仿真时间点m_t(Fs*1)=0; % 基带信号变量初始化for F=150:400 % 基带信号发生:频率150Hz~400Hzm_t=m_t+0.003*sin(2*pi*F*t)*(400-F); % 幅度随线性递减endm_t90shift=imag(hilbert(m_t)); % 基带信号的希尔伯特变换carriercos=cos(2*pi*1000*t); % 1000Hz载波coscarriersin=sin(2*pi*1000*t); % 1000Hz正交载波sins_SSB1=m_t.*carriercos-m_t90shift.*carriersin; % 上边带SSBs_SSB2=m_t.*carriercos+m_t90shift.*carriersin; % 下边带SSB% 下面作出各波形以及频谱figure(1);subplot(4,2,1); plot(t(1:100),carriercos(1:100),...t(1:100),carriersin(1:100),'--r'); % 载波subplot(4,2,2); plot([0:9999],abs(fft(carriercos))); % 载波频谱axis([0 2000 -500 6000]);subplot(4,2,3); plot(t(1:100),m_t(1:100)); % 基带信号subplot(4,2,4); plot([0:9999],abs(fft(m_t))); % 信号频谱axis([0 2000 -500 6000]);subplot(4,2,5); plot(t(1:100),s_SSB1(1:100)); % SSB波形上边带subplot(4,2,6); plot([0:9999],abs(fft(s_SSB1))); % SSB频谱上边带axis([0 2000 -500 6000]);subplot(4,2,7); plot(t(1:100),s_SSB2(1:100)); % SSB波形下边带subplot(4,2,8); plot([0:9999],abs(fft(s_SSB2))); % SSB频谱下边带axis([0 2000 -500 6000]);% ch5example8prog1.mclear;Fs=10000; % 仿真的采样率t=1/Fs:1/Fs:1; % 仿真时间点m_t(Fs*1)=0; % 基带信号变量初始化for F=150:400 % 基带信号发生:频率150Hz~400Hzm_t=m_t+0.003*sin(2*pi*F*t)*(400-F); % 幅度随线性递减endm_t90shift=imag(hilbert(m_t)); % 基带信号的希尔伯特变换carriercos=cos(2*pi*1000*t); % 1000Hz载波coscarriersin=sin(2*pi*1000*t); % 1000Hz正交载波sins_SSB1=m_t.*carriercos-m_t90shift.*carriersin; % 上边带SSBout=s_SSB1.*carriercos; % 相干解调[a,b]=butter(4, 500/(Fs/2)); % 低通滤波器设计4阶,截止频率为500Hz demodsig=filter(a,b,out); % 解调输出% 下面作出各波形以及频谱figure(1);subplot(3,2,1); plot(t(1:100),s_SSB1(1:100)); % SSB波形subplot(3,2,2); plot([0:9999],abs(fft(s_SSB1))); % SSB频谱axis([0 5000 -500 6000]);subplot(3,2,3); plot(t(1:100),out(1:100)); % 相干解调波形subplot(3,2,4); plot([0:9999],abs(fft(out))); % 相干解调频谱axis([0 3000 -500 6000]);subplot(3,2,5); plot(t(1:100),demodsig(1:100)); % 低通输出信号subplot(3,2,6); plot([0:9999],abs(fft(demodsig)));% 低通输出信号的频谱axis([0 3000 -500 6000]);% ch5example8prog2.mclear;Fs=10000; % 仿真的采样率t=1/Fs:1/Fs:1; % 仿真时间点m_t(Fs*1)=0; % 基带信号变量初始化for F=150:400 % 基带信号发生:频率150Hz~400Hzm_t=m_t+0.003*sin(2*pi*F*t)*(400-F); % 幅度随线性递减endm_t90shift=imag(hilbert(m_t)); % 基带信号的希尔伯特变换carriercos=cos(2*pi*1000*t); % 1000Hz载波coscarriersin=sin(2*pi*1000*t); % 1000Hz正交载波sins_SSB1=m_t.*carriercos-m_t90shift.*carriersin; % 上边带SSBout=s_SSB1.*cos(2*pi*1018*t+1);% 存在频率误差的相位误差时的相干解调[a,b]=butter(4, 500/(Fs/2)); % 低通滤波器设计4阶,截止频率为500Hz demodsig=filter(a,b,out); % 解调输出% 下面作出各波形以及频谱figure(1);subplot(3,2,1); plot(t(1:100),s_SSB1(1:100)); % SSB波形subplot(3,2,2); plot([0:9999],abs(fft(s_SSB1))); % SSB频谱axis([0 5000 -500 6000]);subplot(3,2,3); plot(t(1:100),out(1:100)); % 相干解调波形subplot(3,2,4); plot([0:9999],abs(fft(out))); % 相干解调频谱axis([0 3000 -500 6000]);subplot(3,2,5); plot(t(1:100),demodsig(1:100)); % 低通输出信号subplot(3,2,6); plot([0:9999],abs(fft(demodsig)));% 低通输出信号的频谱axis([0 3000 -500 6000]);% ch5example9prog1.m[wav,fs]=wavread('GDGvoice8000.wav');t_end=1/fs *length(wav); % 计算声音的时间长度Fs=50000; % 仿真系统采样率t=1/Fs:1/Fs:t_end; % 仿真系统采样时间点% 设计300Hz~3400Hz的带通预滤波器H(z)[fenzi,fenmu]=butter(3,[300 3400]/(fs/2));% 对音频信号进行预滤波wav=filter(fenzi,fenmu,wav);% 利用插值函数将音频信号的采样率提升为Fs=50KHzwav=interp1([1/fs:1/fs:t_end],wav,t,'spline');wav_hilbert=imag(hilbert(wav)); % 音频信号的希尔伯特变换fc=10000; % 载波频率HzSSB_OUT=wav.*cos(2*pi*fc*t)-wav_hilbert.*sin(2*pi*fc*t); % 单边带调制figure(1); % 观察调制前后频谱subplot(2,2,1); plot(wav(53550:53750)); axis([0 200 -0.3 0.3]);subplot(2,2,2); psd(wav, 10000, Fs); axis([0 25000 -20 10]);subplot(2,2,3); plot(SSB_OUT(53550:53750)); axis([0 200 -0.3 0.3]);subplot(2,2,4); psd(SSB_OUT, 10000, Fs); axis([0 25000 -20 10]); wavwrite(0.5*SSB_OUT,Fs,'SSB_OUT.wav'); % 将SSB调制输出存盘备用% ch5example9prog2.mfunction out=ch5example9prog2(in, SNRdB)% SNR_dB设定信噪比% in 输入信号序列% out 信道输出序列Fs=50000; %系统采样率Power_of_in=var(in);Power_of_noise=Power_of_in/(10.^(SNRdB/10));bandwidth=13500-10000; % 信道带宽N0=Power_of_noise/bandwidth; % 噪声功率谱密度值W/HzGauss_noise=sqrt(N0*Fs/2).*randn(size(in));[num, den]=butter(4, [10000 13500]/(Fs/2)); % 带通信道10KHz到13.5KHz signal_of_filter_out=filter(num, den, in);noise_of_filter_out=filter(num, den, Gauss_noise);SNR_dB=10*log10(var(signal_of_filter_out)/var(noise_of_filter_out))% 测量得出的信噪比out=signal_of_filter_out+noise_of_filter_out; % 信道输出% ch5example9prog3.mclear;[recvsignal, Fs]=wavread('Channel_OUT.wav');% 读入信道输出信号数据t=(1/Fs:1/Fs: length(recvsignal)/Fs)';fc_local=10000-200; % 本地载波频率9.8KHzlocal_carrier=cos(2*pi*fc_local.*t); % 本地载波xianggan_out=recvsignal.*local_carrier; % 相干解调[fenzi,fenmu]=butter(3,[300 3400]/(Fs/2)); % 设计300Hz~3400Hz的带通滤波器demod_out=filter(fenzi,fenmu,xianggan_out); % 对相干输出信号进行滤波sound(demod_out/max(demod_out), Fs); % 播放解调音频wavwrite(demod_out,Fs,'SSBDemod_OUT.wav'); % 保存输出信号% ch5example10prog1.mclear;Y=[1:-1/7:0].*255; % 8级灰度N=8; % 8*N 列数S=ones(N,1);Y=S*Y;Y=reshape(Y,1,N*8);% 将矩阵扩大指定列数的一行M=40; % M 行数S=ones(M,1);Y=S*Y; % 重复M次矩阵行,得出图像矩阵I=uint8(Y); % 转换为uint8格式imshow(I); % 显示imwrite(I,'graybar.tif','tif'); % 并保存为图像文件% ch5example11prog1.mclear;I=imread('graybar.tif');% 读入图像(由上例生成)img=double(I')/255; % 转换为双精度数以便计算[M,N]=size(img);for K=1:2for column=K:2:N % K=1扫描奇数行for row=1:Mdot=img(row,column); % 取当前扫描点的灰度值greydot=[dot,dot,dot]; % R,G,B均设置为相同值,即显示灰度plot(row,N-column,'s','MarkerFaceColor',greydot,...'MarkerEdgeColor',greydot,'MarkerSize',6);hold on; % 保持扫描点axis([1,M, 1, N]); % 作图范围set(gcf,'DoubleBuffer','on');% 双缓冲避免作图闪烁drawnow; % 立即作图endendend% ch5example12prg1.mclear;R=zeros(100,100);G=zeros(100,100);B=zeros(100,100);R(1:50,30:100)=255;G(30:100,50:100)=255;B(1:70,1:70)=255; % 三基色产生I(:,:,1)=R;I(:,:,2)=G;I(:,:,3)=B; % 合成为100*100图像矩阵imshow(uint8(I));% 显示% ch5example13prg1.m% 生成400*480彩条图像clear;R=[1 1 0 0 1 1 0 0];G=[1 1 1 1 0 0 0 0];B=[1 0 1 0 1 0 1 0];N=60; % N*8列S=ones(N,1);R=S*R; R=reshape(R,1,N*8);G=S*G; G=reshape(G,1,N*8);B=S*B; B=reshape(B,1,N*8);M=400; % 行数S=ones(M,1);R=S*R; G=S*G; B=S*B; % 得出三基色矩阵I(:,:,1)=R; I(:,:,2)=G; I(:,:,3)=B; % 组合I=uint8(I*255); % 类型转换imshow(I); % 显示并保存imwrite(I,'colorbar.tif','tif');% ch5example14prg1.mclear;I=imread('colorbar.tif');% 或用autumn.tif,sydney.JPG等图像文件figure(1);imshow(I);I=double(I);[m,n,p]=size(I);I=-(0.75-0.125)./(255).*I+0.75; % 换算为0.125到0.75电平R=I(:,:,1);G=I(:,:,2);B=I(:,:,3);% 三基色分离R=reshape(R',1,m*n); % 转换为1维(红)G=reshape(G',1,m*n); % 转换为1维(绿)B=reshape(B',1,m*n); % 转换为1维(蓝)Y=0.30*R+0.59*G+0.11*B;% 亮度R_Y=R-Y; % 色差R0B_Y=B-Y; % 色差B0V=0.877*R_Y; % 色差电平压缩U=0.493*B_Y; % 色差电平压缩f_c=283.5*15625; % 副载波频率tvY=[interp1(Y,(1:n/980:m*n),'nearest')];% 插值:行采样980点tvV=[interp1(V,(1:n/980:m*n),'nearest')];% 插值tvU=[interp1(U,(1:n/980:m*n),'nearest')];% 插值% 全电视信号产生for h=1:(m-2)s(1280*h+(1:102))=0.75; % 消隐脉冲s(1280*h+(103:197))=1; % 行同步头s(1280*h+(198:300))=0.75;% 消隐脉冲s(1280*h+(301:1280))=tvY(h*980+(-1:978));% 图像一行像素-亮度% 色差VsV(1280*h+(1:300))=0; % 消隐部分sV(1280*h+(220:265))=0.12;% 色同步选通sV(1280*h+(301:1280))=tvV(h*980+(-1:978));% 图像信号部分% 色差UsU(1280*h+(1:300))=0;sU(1280*h+(301:1280))=tvU(h*980+(-1:978));endt=0:0.5e-7:0.5e-7*(length(s)-1);% 计算时间点序列,采样率20MHzF_v=sV.*cos(2*pi*f_c.*t); % 色差信号正交调制F_u=sU.*sin(2*pi*f_c.*t);c=F_v+F_u; % 调制输出的色差信号TVsignal=s+c; % 合成彩色电视信号figure(2); plot(t,TVsignal); xlabel('时间');% 彩色电视信号figure(3); plot(t,s); xlabel('时间'); % 亮度信号% 功率谱计算[Pxxcc,F]=psd(c,1e5,2e7);figure(4); plot(F,10*log10(Pxxcc),'g');hold on;% 调制后的色差信号频谱[Pxx,F]=psd(s,1e5,2e7); % FFT长度为1e5点,故频率分辨率100Hz figure(4); plot(F,10*log10(Pxx),'k'); % 亮度信号频谱xlabel('频率Hz');ylabel('功率谱密度dB');% ch5example15prg1.mclear;ch5example14prg1; % 用实例5.14程序产生彩色全电视信号%---带限高斯信道---TVsignal=TVsignal+0.1*randn(size(TVsignal)); % 加入噪声[b,a]=butter(2,5e6/(20e6/2)); % 传输信道带宽5MHzTVsignal=filter(b,a,TVsignal); % 通过带限信道%---接收部分---[b,a]=butter(2,0.5e6/(20e6/2)); % 行同步滤波h_pulse=filter(b,a,TVsignal);h_pulse=h_pulse>0.87; % 行同步脉冲选出。
MATLAB仿真实例
MATLAB仿真实例通信原理是研究信息在传输中的传递、编码、解码、调制、解调、信道等各个方面的原理和技术。
MATLAB是一种基于数值计算和可视化的高级计算语言和交互式环境,常用于科学计算、算法开发、数据分析和可视化等领域。
下面将介绍一个基于MATLAB的通信原理仿真实例。
实例描述:假设有一个发送端和一个接收端,通过一个信道进行通信。
发送端生成了一个数字信号序列,将其通过一种调制技术转换为模拟信号,经过信道传输到接收端后,接收端需要对接收到的模拟信号进行解调,得到原始的数字信号序列,并与发送端生成的数字信号序列进行比较,评估通信系统的性能。
实例步骤:1.生成数字信号序列:使用MATLAB生成一个随机的二进制数字信号序列。
例如,一个200个比特的数字信号序列可以使用以下代码生成:```MATLABbits = randi([0 1], 1, 200);```2. 调制:在本例中,我们使用二进制相移键控(Binary Phase Shift Keying,BPSK)调制方式将数字信号序列转换为模拟信号。
将1映射为1,将0映射为-1、以下是BPSK调制的MATLAB代码实现:```MATLABmodulated_signal = 2*bits - 1;```3. 添加通道噪声:在信道传输过程中,由于各种原因(如传输损耗、多径效应等),信号可能会受到一定的噪声干扰。
在本例中,我们假设信道噪声为高斯白噪声。
可以使用MATLAB的awgn函数在模拟信号中添加高斯白噪声。
以下是添加高斯白噪声的MATLAB代码实现:```MATLABSNR_dB=10;%信噪比(信号功率与噪声功率之比)received_signal = awgn(modulated_signal, SNR_dB, 'measured');```4.解调:接收端需要对接收到的带有噪声的模拟信号进行解调,以恢复原始的数字信号序列。
对于BPSK调制,可以通过判断接收信号的正负性来解调。
MATLAB2psk通信系统仿真报告
MATLAB2psk通信系统仿真报告英文回答:MATLAB 2-PSK Communication System Simulation Report。
Introduction。
The goal of this report is to present a simulation of a 2-PSK communication system using MATLAB. The system consists of a transmitter, channel, and receiver. The transmitter generates a binary data sequence and modulates it onto a carrier signal. The channel introduces noise and fading into the signal. The receiver demodulates the signal and attempts to recover the original data sequence.System Model。
The system model is shown in the block diagram below.[Image of system block diagram]The transmitter generates a binary data sequence of length N. The data sequence is modulated onto a carrier signal using 2-PSK modulation. The modulated signal is then transmitted over the channel.The channel introduces noise and fading into the signal. The noise is modeled as additive white Gaussian noise (AWGN). Fading is modeled as Rayleigh fading.The receiver demodulates the signal using 2-PSK demodulation. The demodulated signal is then processed to recover the original data sequence.Simulation Results。
MATLAB仿真实例(通信原理)
值。仿真时我们用这个样值集合来表示信号 s( t ) 。显然 t 反映了仿真系统对信号波形的分 辨率, t 越小则仿真的精确度越高。据通信原理所学,信号被取样以后的频谱是频率的周 1 1 期函数,其重复周期是 。如果信号的最高频率为 f H ,那么必须有 f H 才能保证不 t 2 t 1 发生混叠失真。我们称 Bs 为仿真系统的系统带宽。如果我们的仿真程序中设定的采 2 t 样间隔是 t ,那么我们不能用此仿真程序来研究带宽大于 Bs 的信号或系统。 此外,信号 s( t ) 的频谱 S f 通常来说也是定义在频率区间 , 上的连续函数,所以仿 真频域特性时,我们也必须把 S f 截短并取样。考虑到系统带宽是 Bs ,我们把频域的截短
三、 实验内容
3.1 傅里叶变换与傅里叶反变换 对于确定信号 f (t ) ,其傅里叶变换为:
F( f )
F ( f ) 傅里叶反变换为:
f (t )e 2 j ft dt
f (t ) F ( f )e2 j ft df
在通信原理仿真中,傅里叶变换与傅里叶反变换会经常用到,我们可以利用 MATLAB 的快速傅里叶变换函数 fft 与快速傅里叶反变换函数 ifft 编写傅里叶变换子程序与傅里叶反 变换子程序。其 程 序 代 码 如 下 :
傅里叶变换子程序:
%傅里叶变换子程序 function X=t2f(x) global dt df N t f T %X=t2f(x) %x 为时域的取样值矢量 %X 为 x 的傅氏变换 %X 与 x 长度相同,并为 2 的整幂。
matlab通信系统仿真[1]
大作业三通信系统仿真电子系无71李乾2007011252FDMA的Simulink仿真:1,连接图如下,参数设置同教材。
2,其中六个滤波器的作用,前边三个是将调制后的信号滤出来,便于将其加在一起进行传输。
后边三个是将加在一起的信号,根据其频率不同,进行选频,并且滤除噪声干扰。
将选出的信号交给后边的部件进行解调。
参数设置为:都是butterworth型带通滤波器。
前三个低频截止频率和高频截止频率分别是:Filter1:30*2*pi~50*2*piFilter2:50*2*pi~70*2*piFilter3:70*2*pi~90*2*pi后三个对应相同。
三个scope的波形依次为:第一路正弦信号:第二路方波信号:第三路锯齿波信号:三路相加的信号频谱:没深入考虑。
)TDMA的Simulink仿真:1,设计如下:pulse Genrtator单元用来产生三分之一方波,参数设置如下:Unit Delay用来产生三分之一周期的延迟,参数设置如下:产生的方波将信号分别取值并放到各自的时间域。
然后送入传输线路。
2,接受单元和时分多址复用单元完全相同。
其门控脉冲要同时发出,且周期占空比都相同。
即达到完全同步。
3,仿真结果如下:CDMA的Simulink仿真1,initial seed设置成不同值,就可以产生三路不同的信号。
第1到6号Relay单元设置如下:第7到9号Relay单元设置如下:两个Integer Delay分别设置如下:PN序列产生器:滤波器设置如下:最后得到的三路信号和输出的信号:(这部分的主要参数设置还是改sample time,不过有些单元的设置还是有些不明就里,大量参照了别人的设置。
)2,语音信号由workspace导入,并且转化成二进制码流,输入到CDMA的三个输入端,输出的二进制信号再转化成语音信号导入到workspace中。
语音信号可能会好些。
不过遗憾的是,没有听到远近效应。
三种多址方式的比较:1,关于频带资源占用,FDMA占用最大,TDMA和CDMA较小。
matlab通信仿真实例
matlab通信仿真实例Matlab通信仿真实例:频移键控(FSK)调制与解调引言:通信系统在现代社会的发展中起着关键作用,其性能的评估和优化是一个重要的研究方向。
Matlab作为通信仿真的强大工具,具有广泛的应用。
本文将以频移键控(FSK)调制与解调为例,介绍如何使用Matlab进行通信仿真实例。
我们将从FSK调制与解调的基本原理开始,逐步介绍Matlab编程实现。
第一节:FSK调制原理频移键控(FSK)是一种基于频率调制的数字调制技术。
在FSK调制中,数字数据被映射到不同的频率,即0和1分别对应不同的载波频率。
调制信号可以表示为:s(t) = Acos(2πf1t) ,当输入为0s(t) = Acos(2πf2t) ,当输入为1其中s(t)为调制信号,A为幅度,f1和f2分别为两个载波频率。
FSK信号的频谱包含这两个载波频率。
下面我们将使用Matlab实现FSK调制。
第二节:Matlab编程实现FSK调制在Matlab中,我们可以使用频率生成器函数freqgen来生成不同频率的信号。
首先,我们需要在Matlab中定义载波频率f1和f2,和待调制的数字数据序列x。
f1 = 1000; 第一个载波频率f2 = 2000; 第二个载波频率x = [0 1 0 1 0]; 待调制的数字数据序列接下来,我们可以根据以上公式,使用正弦函数生成相应的调制信号。
t = 0:0.0001:0.001; 时间间隔s = zeros(size(t)); 初始化调制信号为0for i = 1:length(x)if x(i) == 0s = s + cos(2*pi*f1*t);elses = s + cos(2*pi*f2*t);endend在上述代码中,我们使用for循环遍历输入数据序列的每个元素,根据输入数据的值选择不同的载波频率,并将调制信号叠加在一起。
最后,我们得到了FSK调制信号s。
接下来,我们将介绍FSK解调的原理和Matlab 的实现。
基于MATLAB通信系统的设计仿真
基于MATLAB通信系统的设计仿真概述:通信系统是实现信息传输的关键技术,其中设计和仿真是通信系统的重要环节。
本文将介绍如何基于MATLAB进行通信系统的设计和仿真,并以调制和解调为例进行说明。
通信系统的设计和仿真步骤:1.确定系统需求:首先确定通信系统的需求,包括传输速率、距离、信噪比等参数。
2.选择调制方式:根据系统需求和传输介质的特性,选择合适的调制方式,如BPSK、QPSK、16-QAM等。
3.生成基带信号:根据调制方式和传输要求,使用MATLAB生成相应的基带信号。
4.添加调制信号:将基带信号进行调制,生成调制信号,如使用频率调制、相位调制等技术。
5.添加噪声:为了模拟真实通信环境,需要在调制信号中加入噪声信号,可以使用MATLAB提供的噪声函数。
6.解调信号:使用相应的解调技术对接收到的信号进行解调,恢复原始基带信号。
7.评估系统性能:比较解调后的基带信号与原始信号,评估系统的性能,如误码率、误符号率等。
调制与解调的MATLAB实例:以BPSK调制为例,假设系统需求为传输速率2Mbps,信噪比为20dB。
1.生成基带信号:```matlabfs = 10e6; % 采样率N=1000;%生成1000个符号bits = randi([0 1],1,N); % 生成随机的二进制信号Ts = 1/fs; % 采样周期t=0:Ts:(N-1)*Ts;%时间序列baseband_signal = bits.*2-1; % 将0或1转换为-1或1```2.添加调制信号:```matlabfc = 1e6; % 载波频率modulated_signal = baseband_signal .* cos(2*pi*fc*t); % 调制信号```3.添加噪声:```matlabEbNo=10^(20/10);%信噪比,20dB转为线性值N0=1/(2*EbNo);%噪声功率,信噪比为能量比noise = sqrt(N0/2) * randn(size(t)); % 产生高斯白噪声received_signal = modulated_signal + noise; % 加噪声```4.解调信号:```matlabdemodulated_signal = received_signal .* cos(2*pi*fc*t); % 解调信号```5.评估系统性能:```matlabest_baseband_signal = sum(demodulated_signal) > 0; % 判断信号正负,得到解调后的二进制信号error_bits = sum(bits ~= est_baseband_signal); % 计算误码个数BER = error_bits / N; % 误码率```通过调整系统参数,可以进行更详细的仿真和性能评估。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
补充内容:模拟调制系统的MATLAB 仿真1.抽样定理为了用实验的手段对连续信号分析,需要先对信号进行抽样(时间上的离散化),把连续数据转变为离散数据分析。
抽样(时间离散化)是模拟信号数字化的第一步。
Nyquist 抽样定律:要无失真地恢复出抽样前的信号,要求抽样频率要大于等于两倍基带信号带宽。
抽样定理建立了模拟信号和离散信号之间的关系,在Matlab 中对模拟信号的实验仿真都是通过先抽样,转变成离散信号,然后用该离散信号近似替代原来的模拟信号进行分析的。
【例1】用图形表示DSB 调制波形 及其包络线。
)4cos()2cos(t t y ππ=clf%%计算抽样时间间隔fh=1;%%调制信号带宽(Hz)fs=100*fh;%%一般选取的抽样频率要远大于基带信号频率,即抽样时间间隔要尽可能短。
ts=1/fs;%%根据抽样时间间隔进行抽样,并计算出信号和包络t=(0:ts:pi/2)';%抽样时间间隔要足够小,要满足抽样定理。
envelop=cos(2*pi*t);%%DSB 信号包络y=cos(2*pi*t).*cos(4*pi*t);%已调信号%画出已调信号包络线plot(t,envelop,'r:','LineWidth',3);hold onplot(t,-envelop,'r:','LineWidth',3);%画出已调信号波形plot(t,y,'b','LineWidth',3);axis([0,pi/2,-1,1])%hold off%xlabel('t');%写出图例【例2】用图形表示DSB 调制波形 及其包络线。
)6cos()2cos(t t y ππ=clf%%计算抽样时间间隔fh=1;%%调制信号带宽(Hz)fs=100*fh;%抽样时间间隔要足够小,要满足抽样定理。
ts=1/fs;%%根据抽样时间间隔进行抽样t=(0:ts:pi/2);envelop=cos(2*pi*t);%%DSB 信号包络y=cos(2*pi*t).*cos(6*pi*t);%已调信号%画出已调信号包络线plot(t,envelop,'r:','LineWidth',3);hold onplot(t,-envelop,'r:','LineWidth',3);%画出已调信号波形plot(t,y,'b','LineWidth',3);axis([0,pi/2,-1,1]);注意观察:过零点“反相”现象。
2.信号的频谱和功率)()(f F t f −−−→←傅立叶变换【例3】画出DSB 信号的频谱并计算已调信号的功率。
)10cos()2cos(t t y ππ=clf%%计算抽样时间间隔fh=1;%%调制信号带宽(Hz)fs=20*fh;ts=1/fs;%%根据抽样时间间隔进行抽样t=(0:ts:2*pi);%抽样时间间隔要足够小,要满足抽样定理。
y=cos(2*pi*t).*cos(10*pi*t);%已调信号%计算已调信号的傅立叶变化n=2^nextpow2(length(t));%傅立叶变换的序列长度spectrum=fft(y,n);df=fs/n;%频率分辨率f=[0:df:df*(length(spectrum)-1)]-fs/2;%FFT 频率向量%计算信号功率p=(norm(y)^2)/length(y)%画出已调信号频谱plot(f,fftshift(abs(spectrum)),'b','LineWidth',3);xlabel('frequency/Hz');title('Magnitude-spectrum of y');p =0.25203.AWGN 的产生及功率谱密度已知AWGN 信道中噪声的比特信噪比为10dB ,信号功率0.25W ,求噪声功率并画出噪声的时域波形。
clf %%计算抽样时间间隔fh=1;%%调制信号带宽(Hz)fs=40*fh;ts=1/fs;t=(0:ts:2*pi);%根据抽样间隔生成抽样时间%生成AWGN 噪声序列snr=10;%信噪比10dB snr_lin=10^(snr/10);%分贝信噪比转换为线性信噪比noise_power=p_DSB/snr_lin noise_std=sqrt(noise_power);noise=randn(1,length(y))*noise_std;plot(t,noise,'LineWidth',2) noise_power =4.DSB 调制解调【例4】画出基带信号和DSB 信号的频谱并计算基带信号和)2cos()(t t m π=)10cos()2cos(t t y ππ=已调信号的功功率。
clf%%计算抽样时间间隔fh=1;%%调制信号带宽(Hz)fs=40*fh;ts=1/fs;%%根据抽样时间间隔进行抽样t=(0:ts:pi);%抽样时间间隔要足够小,要满足抽样定理。
m=cos(2*pi*t);%基带信号y=m.*cos(10*pi*t);%已调信号%计算基带信号的傅立叶变换n=2^nextpow2(length(t));%傅立叶变换的序列长度spectrum_baseband=fft(m,n);df=fs/n;%频率分辨率f=[0:df:df*(length(spectrum_baseband)-1)]-fs/2;%FFT频率向量%计算已调信号的频谱n=2^nextpow2(length(t));%傅立叶变换的序列长度spectrum_DSB=fft(y,n);df=fs/n;%频率分辨率f=[0:df:df*(length(spectrum_DSB)-1)]-fs/2;%FFT频率向量%计算信号功率p_baseband=(norm(m)^2)/length(m)p_DSB=(norm(y)^2)/length(y)%画出已调信号频谱subplot(2,1,1);plot(f,fftshift(abs(spectrum_baseband)),'b','LineWidth',3); xlabel('frequency/Hz');title('Magnitude-spectrum of baseband'); subplot(2,1,2);plot(f,fftshift(abs(spectrum_DSB)),'b','LineWidth',3);xlabel('frequency/Hz');title('Magnitude-spectrum of DSB');p_baseband =0.5145p_DSB =clfsnr=10;%信噪比10dBsnr_lin=10^(snr/10);%分贝信噪比转换为线性信噪比noise_power=p_DSB/snr_lin;noise_std=sqrt(noise_power);noise=randn(1,length(y))*noise_std;signal_in_channel=y+noise;subplot(2,1,1);plot(t,signal_in_channel,'b')xlabel('t');ylabel('DSB signal plus noise');axis([0,pi,-1,1]); subplot(2,1,2);plot(t,y,'r');xlabel('t');ylabel('DSB signal');5.AM 调制解调【例4】画出基带信号和AM 信号以及载波)2cos()(t t m π=)10cos()1)2(cos(t t y ππ+=的频谱并计算基带信号和已调信号的功率。
并比较该AM 信号与例题3中的DSB 信号的)10cos()(t t s π=时域波形。
clf%%计算抽样时间间隔fh=1;%%调制信号带宽(Hz)fs=20*fh;ts=1/fs;%%根据抽样时间间隔进行抽样t=(0:ts:pi);%抽样时间间隔要足够小,要满足抽样定理。
m=cos(2*pi*t);c=cos(10*pi*t);y=(1+m).*c;%已调信号%计算基带信号的傅立叶变换n=2^nextpow2(length(t));%傅立叶变换的序列长度spectrum_baseband=fft(m,n);df=fs/n;%频率分辨率f=[0:df:df*(length(spectrum_baseband)-1)]-fs/2;%FFT 频率向量%计算载波功率n=2^nextpow2(length(t));%傅立叶变换的序列长度spectrum_carrier=fft(c,n);df=fs/n;%频率分辨率f=[0:df:df*(length(spectrum_baseband)-1)]-fs/2;%FFT 频率向量%计算已调信号的频谱n=2^nextpow2(length(t));%傅立叶变换的序列长度spectrum_AM=fft(y,n);df=fs/n;%频率分辨率f=[0:df:df*(length(spectrum_AM)-1)]-fs/2;%FFT 频率向量%计算信号功率p_baseband=(norm(m)^2)/length(m)p_AM=(norm(y)^2)/length(y)p_carrier=(norm(c)^2)/length(c)%画出已调信号频谱subplot(3,1,1);plot(f,fftshift(abs(spectrum_baseband)),'b','LineWidth',3);xlabel('frequency/Hz');title('Magnitude-spectrum of baseband');subplot(3,1,2);plot(f,fftshift(abs(spectrum_AM)),'b','LineWidth',3);xlabel('frequency/Hz');title('Magnitude-spectrum of AM');subplot(3,1,3);plot(f,fftshift(abs(spectrum_carrier)),'b','LineWidth',3);xlabel('frequency/Hz');title('Magnitude-spectrum of carrier'); p_baseband =0.5168p_AM =0.8297p_carrier =clfDSB=m.*c;%DSB 信号envelop_DSB=m;%包络envelop_AM=1+m;subplot(2,1,1);plot(t,DSB,'b')hold onplot(t,envelop_DSB,'r:');plot(t,-envelop_DSB,'r:');hold offxlabel('t');ylabel('DSB signal');subplot(2,1,2);plot(t,y,'b');hold on;plot(t,envelop_AM,'r:');plot(t,-envelop_AM,'r:');hold offxlabel('t');ylabel('AM signal');。