MATLAB实现通信系统仿真实例
- 格式:doc
- 大小:108.50 KB
- 文档页数:6
matlab 通信仿真案例
在MATLAB中,通信仿真是一个常见的应用领域,可以用于模拟
和分析数字通信系统的性能。
下面我将从多个角度介绍几个常见的
通信仿真案例。
1. OFDM系统仿真,OFDM(正交频分复用)是一种常见的多载
波调制技术,用于高速数据传输。
你可以使用MATLAB来建立一个基
本的OFDM系统仿真模型,包括信道估计、均衡和解调等模块。
通过
仿真可以分析系统在不同信噪比下的误码率性能,优化系统参数以
及算法设计。
2. 无线通信系统仿真,你可以使用MATLAB建立一个简单的无
线通信系统仿真模型,包括传输信道建模、调制解调、信道编码、
多天线技术等。
通过仿真可以评估系统的覆盖范围、传输速率、抗
干扰能力等性能指标。
3. MIMO系统仿真,MIMO(多输入多输出)技术在无线通信中
得到了广泛应用。
你可以使用MATLAB建立一个MIMO系统仿真模型,包括空间多路复用、信道估计、预编码等。
通过仿真可以分析系统
的信道容量、波束赋形技术对系统性能的影响等。
4. LTE系统仿真,LTE(长期演进)是目前移动通信领域的主流技术之一。
你可以使用MATLAB建立一个LTE系统仿真模型,包括物理层信号处理、上下行链路传输、信道编码解码等。
通过仿真可以评估系统的覆盖范围、传输速率、干扰抑制能力等性能指标。
以上是一些常见的通信仿真案例,通过MATLAB你可以方便地建立仿真模型,分析系统性能,并优化系统设计。
希望这些案例能够帮助到你。
基于MATLAB的MIMO-OFDM通信系统的仿真0 引言5G技术的逐步普及,使得我们对海量数据的存储交换,以及数据传输速率、质量提出了更高的要求。
信号的准确传播显得越发重要,随之而来的是对信道模型稳定性、抗噪声性能以及低误码率的要求。
本次研究通过构建结合空间分集和空间复用技术的MIMO信道,引入OFDM 技术搭建MIMO-OFDM 系统,在添加保护间隔的基础上探究其在降低误码率以及稳定性等方面的优异性能。
1 概述正交频分复用(Orthogonal Frequency Division Multiplexing,OFDM)技术通过将信道分成数个互相正交的子信道,再将高速传输的数据信号转换成并行的低速子数据流进行传输。
该技术充分利用信道的宽度从而大幅度提升频谱效率达到节省频谱资源的目的。
作为多载波调制技术之一的OFDM 技术目前已经在4G 中得到了广泛的应用,5G 技术作为新一代的无线通信技术,对其提出了更高的信道分布和抗干扰要求。
多输入多输出(Multi Input Multi Output,MIMO)技术通过在发射端口的发射机和接收端口的接收机处设计不同数量的天线在不增加频谱资源的基础上通过并行传输提升信道容量和传输空间。
常见的单天线发射和接收信号传输系统容量小、效率低且若出现任意码间干扰,整条链路都会被舍弃。
为了改善和提高系统性能,有学者提出了天线分集以及大规模集成天线的想法。
IEEE 806 16 系列是以MIMO-OFDM 为核心,其目前在欧洲的数字音频广播,北美洲的高速无线局域网系统等快速通信中得到了广泛应用。
多媒体和数据是现代通信的主要业务,所以快速化、智能化、准确化是市场向我们提出的高要求。
随着第五代移动通信5G 技术的快速发展,MIM-OFDM 技术已经开始得到更广泛的应用。
本次研究的MIMO-OFDM 系统模型是5G的关键技术,所以对其深入分析和学习,对于当下无线接入技术的发展有着重要的意义。
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 仿真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通信仿真实例在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通信系统仿真实验报告(2014-2015 学年第2 学期)实验一、MATLAB的基本使用与数学运算目的:学习MATLAB的基本操作,实现简单的数学运算程序。
内容:1、要求在闭区间[0,2π]上产生具有10个等间距采样点的一维数组。
试用两种不同的指令实现。
2、用M文件建立大矩阵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]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。
4、任意建立矩阵A,然后找出在[10,20]区间的元素位置。
程序代码及运行结果:1.(1)程序代码:方法1: a = 0:2*pi/10:2*pi方法2: a1 = inspace(0,2*pi,10)(2)运行结果如图1-1所示:图 1- 12.(1)程序代码:x=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9;1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9;2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9;3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9]运行结果如图1-2所示:图 1-23.(1)程序代码:A=[5,6;7,8];B=[9,10;11,12];C=A+BD=A*BE=A.*BF=A^3G=A.^3H=A/BI=A\B(2)运行结果:C =14 1618 20D =111 122151 166E =45 6077 96F =881 10261197 1394G =125 216343 512H =3.0000 -2.00002.0000 -1.0000I =-3.0000 -4.00004.00005.00004.(1)程序代码:>>A=[4,15,-45,10,6;56,0,17,-45,0] B=find(A>=10&A<=20)(2)运行结果:A=4 15 -45 10 656 0 17 -45 0B=367总结:通过本次实验学习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文件之下才可以。
• 139•针对通信原理课程的教学特点和传统实验教学存在的问题,讨论了将Matlab软件引入到通信原理课程教学的必要性。
以模拟调制系统为例,利用Matlab的工具箱和Simulink界面对通信系统进行可视化教学,并给出了仿真结果。
实践证明,不仅在课堂教学中以更加直观的方式进行讲解,而且补充和完善传统实验的不足,提高学生学习积极性,教学效果得到较大提升。
随着5G通信的到来,通信技术在人们日常生活中是无处不在,现代通信技术取得了显著进展。
通信原理作为高校通信工程和电子信息等本科专业课程体系中重要的专业基础课,系统阐述了模拟和数字通信系统的基本概念、基本原理和基本分析方法,为学生学习后续课程储备专业素养(王海华,Matlab/Simulink仿真在“通信原理”教学中的应用研究:湖北理工学院学报,2015)。
然而这门课程理论内容丰富,系统模型抽象,数学公式多,推理过程繁琐,学生普遍感到枯燥难懂,抓不住重点,学习吃力,不能顺利学好本课程(基于Matlab_Simulink的通信原理虚拟仿真实验教学方法研究:现代电子技术,2015;邵玉斌,Matlab/Simulink通信系统建模与仿真实例分析:清华大学出版社,2008)。
为此,在教学过程中引入Matlab仿真技术,理论联系实践开展教学工作,通过simulink界面搭建系统模型,调整参数,观察通信系统性能,激发学生的学习积极性,提升教学质量,实现良好的教学模式。
1 Matlab软件介绍Matlab在工程数值运算和系统仿真方面具有强大的功能,主要包括数值分析、仿真建模、系统控制和优化等功能(牛磊,赵正平,郭博,Matlab仿真在通信原理教学中的应用:阜阳师范学院学报,2014)。
在Matlab的Communication Toolbox(通信工具箱)中提供了许多仿真函数和模块,用于对通信系统进行仿真和分析。
Simulink平台是Matlab中一种可视化仿真工具,提供了建立模型方框图的图形用户界面(GUI),可以将图形化的系统模块连接起来,从而建立直观、功能丰富的动态系统模型(黄琳,曹杉杉,熊旭辉.基于Matlab的通信原理实验课程设计:湖北师范大学学报,2017)。
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调制,可以通过判断接收信号的正负性来解调。
补充内容:模拟调制系统的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;%信噪比10dBsnr_lin=10^(snr/10);%分贝信噪比转换为线性信噪比noise_power=p_DSB/snr_linnoise_std=sqrt(noise_power);noise=randn(1,length(y))*noise_std;plot(t,noise,'LineWidth',2)noise_power =4.DSB 调制解调【例4】画出基带信号)2cos()(t t m π=和DSB 信号)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】画出基带信号)2cos()(t t m π=和AM 信号)10cos()1)2(cos(t t y ππ+=以及载波)10cos()(t t s π=的频谱并计算基带信号和已调信号的功率。
并比较该AM 信号与例题3中的DSB 信号的时域波形。
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');。