MATLAB仿真实例(通信原理)
matlab 通信仿真案例

matlab 通信仿真案例Matlab是一种强大的工程仿真软件,可以用于各种领域的仿真案例,包括通信系统。
通信系统仿真是Matlab的一个常见应用领域,可以涉及到数字通信、无线通信、信号处理等方面。
下面我将从多个角度介绍几个通信仿真案例。
数字调制仿真是通信系统仿真的一个重要方面。
在Matlab中,你可以使用数字调制技术来模拟各种调制方案,比如QPSK、16-QAM、OFDM等。
你可以创建一个仿真模型,包括信道模型、噪声模型等,来评估不同调制方案在不同信噪比下的性能。
另一个常见的通信系统仿真案例是无线信道建模。
在Matlab中,你可以使用射线追踪技术或者其他无线信道建模工具,来模拟不同类型的无线信道,比如室内信道、室外信道等。
通过仿真,你可以评估不同信道条件下无线通信系统的性能表现。
此外,Matlab还可以用于设计和仿真滤波器和均衡器。
你可以使用Matlab的信号处理工具箱来设计各种数字滤波器和均衡器,并通过仿真来评估它们在通信系统中的性能。
另一个重要的通信系统仿真案例是误码率性能评估。
在Matlab 中,你可以通过模拟传输过程中的比特错误来评估系统的误码率性能。
你可以使用各种编码和调制技术,以及不同的信道条件,来评估系统在不同情况下的误码率表现。
最后,Matlab还可以用于设计和仿真通信系统中的自适应算法,比如自适应均衡、自适应调制解调等。
通过仿真,你可以评估这些自适应算法在不同信道条件下的性能表现。
总之,Matlab是一个非常强大的工程仿真工具,可以用于各种通信系统的仿真案例,包括数字调制、无线信道建模、滤波器设计、误码率性能评估以及自适应算法设计等。
希望这些信息能够对你有所帮助。
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仿真实例

MATLAB仿真实例通信原理是指传输信息的原理和方法。
MATLAB可以用于实现各种通信原理的仿真,包括信号的调制、发送、接收、解调等过程。
下面我将介绍一个基于MATLAB的通信原理仿真实例。
本实例以频率调制通信原理为基础,以调频调制(FM)为例进行仿真。
1.首先定义模拟信号源,生成一个基带信号。
例如,我们可以选择一个正弦波信号作为基带信号,其频率为$f_m$。
2.接下来,我们需要将基带信号进行调频调制。
在调频调制过程中,我们将基带信号的频率进行调制,生成载频为$f_c$的调制信号。
3. 在MATLAB中,我们可以使用freqmod函数来进行调频调制。
该函数接受基带信号、载频和调制指数作为输入参数,并返回调制信号。
4.在得到调制信号后,我们可以进行发送模拟。
发送模拟是指将调制信号通过信道传输,可以简单地将信号存储为一个信道矩阵。
5. 在接收端,我们需要对接收到的信号进行解调,以恢复基带信号。
在调频调制中,我们可以使用freqdemod函数进行解调。
该函数接受解调信号、载频和调制指数作为输入参数,并返回解调后的信号。
6.最后,我们可以将解调信号与原始信号进行比较,计算它们之间的误差。
可以使用均方根误差(RMSE)作为误差度量指标。
通过以上过程,我们可以完成一个简单的基于MATLAB的调频调制仿真。
为了使仿真更贴近实际通信场景,我们还可以添加信道噪声等因素。
例如,我们可以在发送模拟过程中,向信道矩阵中添加高斯白噪声。
这样可以更真实地模拟信号在传输过程中受到干扰和噪声的情况。
通过以上步骤,我们可以利用MATLAB进行通信原理的仿真实践。
这个实例不仅可以帮助我们加深理解通信原理的基本概念和过程,还可以通过实际操作和仿真结果进行验证和验证。
总之,MATLAB是一个非常强大的工具,可以用于各种通信原理的仿真。
通过利用MATLAB进行仿真实践,我们可以更深入地理解通信原理的基本原理和过程,提高我们的理论水平和实践能力。
通信原理基于matlab的计算机仿真

例1-1%周期信号(方波)的展开,fb_jinshi.mclose all;clear all;N=100; %取展开式的项数为2N+1项T=1;fs=1/T;N_sample=128; %为了画出波形,设置每个周期的采样点数dt = T/N_sample;t=0:dt:10*T-dt;n=-N:N;Fn = sinc(n/2).*exp(-j*n*pi/2);Fn(N+1)=0;ft = zeros(1,length(t));for m=-N:Nft = ft + Fn(m+N+1)*exp(j*2*pi*m*fs*t);endplot(t,ft)例 1-2利用FFT计算信号的频谱并与信号的真实频谱的抽样比较。
脚本文件T2F.m定义了函数T2F,计算信号的傅立叶变换。
function [f,sf]= T2F(t,st)%This is a function using the FFT function to calculate a signal's Fourier %Translation%Input is the time and the signal vectors,the length of time must greater %than 2%Output is the frequency and the signal spectrumdt = 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);脚本文件F2T.m定义了函数F2T,计算信号的反傅立叶变换。
function [t st]=F2T(f,sf)%This function calculate the time signal using ifft function for the input %signal's spectrumdf = f(2)-f(1);Fmx = ( f(end)-f(1) +df);dt = 1/Fmx;N = length(sf);T = dt*N;%t=-T/2:dt:T/2-dt;t = 0:dt:T-dt;sff = fftshift(sf);st = Fmx*ifft(sff);另写脚本文件fb_spec.m如下:%方波的傅氏变换, fb_spec.mclear all;close all;T=1;N_sample = 128;dt=T/N_sample;t=0:dt:T-dt;st=[ones(1,N_sample/2), -ones(1,N_sample/2)]; %方波一个周期subplot(211);plot(t,st);axis([0 1 -2 2]);xlabel('t'); ylabel('s(t)');subplot(212);[f sf]=T2F(t,st); %方波频谱plot(f,abs(sf)); hold on;axis([-10 10 0 1]);xlabel('f');ylabel('|S(f)|');%根据傅氏变换计算得到的信号频谱相应位置的抽样值sff= T^2*j*pi*f*0.5.*exp(-j*2*pi*f*T).*sinc(f*T*0.5).*sinc(f*T*0.5);plot(f,abs(sff),'r-')例1-3%信号的能量计算或功率计算,sig_pow.mclear all;close all;dt = 0.01;t = 0:dt:5;s1 = exp(-5*t).*cos(20*pi*t);s2 = cos(20*pi*t);E1 = sum(s1.*s1)*dt; %s1(t)的信号能量P2 = sum(s2.*s2)*dt/(length(t)*dt); %s2(t)的信号功率s[f1 s1f]= T2F(t,s1);[f2 s2f]= T2F(t,s2);df = f1(2)-f1(1);E1_f = sum(abs(s1f).^2)*df; %s1(t)的能量,用频域方式计算df = f2(2)-f2(1);T = t(end);P2_f = sum(abs(s2f).^2)*df/T; %s2(t)的功率,用频域方式计算figure(1)subplot(211)plot(t,s1);xlabel('t'); ylabel('s1(t)');subplot(212)plot(t,s2)xlabel('t'); ylabel('s2(t)');例1-4%方波的傅氏变换,sig_band.mclear all;close all;T=1;N_sample = 128;dt=1/N_sample;t=0:dt:T-dt;st=[ones(1,N_sample/2) -ones(1,N_sample/2)];df=0.1/T;Fx = 1/dt;f=-Fx:df:Fx-df;%根据傅氏变换计算得到的信号频谱sff= T^2*j*pi*f*0.5.*exp(-j*2*pi*f*T).*sinc(f*T*0.5).*sinc(f*T*0.5);plot(f,abs(sff),'r-')axis([-10 10 0 1]);hold on;sf_max = max(abs(sff));line([f(1) f(end)],[sf_max sf_max]);line([f(1) f(end)],[sf_max/sqrt(2) sf_max/sqrt(2)]); %交点处为信号功率下降3dB处Bw_eq = sum(abs(sff).^2)*df/T/sf_max.^2; %信号的等效带宽例 1-5%带通信号经过带通系统的等效基带表示,sig_bandpass.mclear all;close all;dt = 0.01;t = 0:dt:5;s1 = exp(-t).*cos(20*pi*t); %输入信号[f1 s1f]= T2F(t,s1); %输入信号的频谱s1_lowpass = hilbert(s1).*exp(-j*2*pi*10*t); %输入信号的等效基带信号[f2 s2f]=T2F(t,s1_lowpass); %输入等效基带信号的频谱h2f = zeros(1,length(s2f));[a b]=find( abs(s1f)==max(abs(s1f)) ); %找到带通信号的中心频率h2f( 201-25:201+25 )= 1;h2f( 301-25:301+25) = 1;h2f = h2f.*exp(-j*2*pi*f2); %加入线性相位,[t1 h1] = F2T(f2,h2f); %带通系统的冲激响应h1_lowpass = hilbert(h1).*exp(-j*2*pi*10*t1); %等效基带系统的冲激响应figure(1)subplot(521);plot(t,s1);xlabel('t'); ylabel('s1(t)'); title('带通信号');subplot(523);plot(f1,abs(s1f));xlabel('f'); ylabel('|S1(f)|'); title('带通信号幅度谱');subplot(522)plot(t,real(s1_lowpass));xlabel('t');ylabel('Re[s_l(t)]');title('等效基带信号的实部');subplot(524)plot(f2,abs(s2f));xlabel('f');ylabel('|S_l(f)|');title('等效基带信号的幅度谱');%画带通系统及其等效基带的图subplot(525)plot(f2,abs(h2f));xlabel('f');ylabel('|H(f)|');title('带通系统的传输响应幅度谱'); subplot(527)plot(t1,h1);xlabel('t');ylabel('h(t)');title('带通系统的冲激响应');subplot(526)[f3 hlf]=T2F(t1,h1_lowpass);plot(f3,abs(hlf));xlabel('f');ylabel('|H_l(f)|');title('带通系统的等效基带幅度谱');subplot(528)plot(t1,h1_lowpass);xlabel('t');ylabel('h_l(t)');title('带通系统的等效基带冲激响应');%画出带通信号经过带通系统的响应及等效基带信号经过等效基带系统的响应tt = 0:dt:t1(end)+t(end);yt = conv(s1,h1);subplot(529)plot(tt,yt);xlabel('t');ylabel('y(t)');title('带通信号与带通系统响应的卷积')ytl = conv(s1_lowpass,h1_lowpass).*exp(j*2*pi*10*tt);subplot(5,2,10)plot(tt,real(yt));xlabel('t');ylabel('y_l(t)cos(20*pi*t');title('等效基带与等效基带系统响应的卷积×中心频率载波')例 1-6%例:窄带高斯过程,文件 zdpw.mclear all; close all;N0=1; %双边功率谱密度fc=10; %中心频率B=1; %带宽dt=0.01;T=100;t=0:dt:T-dt;%产生功率为N0*B的高斯白噪声P = N0*B;st = sqrt(P)*randn(1,length(t));%将上述白噪声经过窄带带通系统,[f,sf] = T2F(t,st); %高斯信号频谱figure(1)plot(f,abs(sf)); %高斯信号的幅频特性[tt gt]=bpf(f,sf,fc-B/2,fc+B/2); %高斯信号经过带通系统glt = hilbert(real(gt)); %窄带信号的解析信号,调用hilbert函数得到解析信号glt = glt.*exp(-j*2*pi*fc*tt);[ff,glf]=T2F( tt, glt );figure(2)plot(ff,abs(glf));xlabel('频率(Hz)'); ylabel('窄带高斯过程样本的幅频特性')figure(3)subplot(411);plot(tt,real(gt));title('窄带高斯过程样本')subplot(412)plot(tt,real(glt).*cos(2*pi*fc*tt)-imag(glt).*sin(2*pi*fc*tt))title('由等效基带重构的窄带高斯过程样本')subplot(413)plot(tt,real(glt));title('窄带高斯过程样本的同相分量')subplot(414)plot(tt,imag(glt));xlabel('时间t(秒)'); title('窄带高斯过程样本的正交分量')%求窄带高斯信号功率;注:由于样本的功率近似等于随机过程的功率,因此可能出现一些偏差P_gt=sum(real(gt).^2)/T;P_glt_real = sum(real(glt).^2)/T;P_glt_imag = sum(imag(glt).^2)/T;%验证窄带高斯过程的同相分量、正交分量的正交性a = real(glt)*(imag(glt))'/T;用到的子函数function [t,st]=bpf(f,sf,B1,B2)%This function filter an input at frequency domain by an ideal bandpass filter %Inputs:% f: frequency samples% sf: input data spectrum samples% B1: bandpass's lower frequency% B2: bandpass's higher frequency%Outputs:% t: frequency samples% st: output data's time samplesdf = f(2)-f(1);T = 1/df;hf = zeros(1,length(f));bf = [floor( B1/df ): floor( B2/df )] ;bf1 = floor( length(f)/2 ) + bf;bf2 = floor( length(f)/2 ) - bf;hf(bf1)=1/sqrt(2*(B2-B1));hf(bf2)=1/sqrt(2*(B2-B1));yf=hf.*sf.*exp(-j*2*pi*f*0.1*T);[t,st]=F2T(f,yf);例 1-7%显示模拟调制的波形及解调方法DSB,文件mdsb.m%信源close all;clear all;dt = 0.001; %时间采样间隔fm=1; %信源最高频率fc=10; %载波中心频率T=5; %信号时长t = 0:dt:T;mt = sqrt(2)*cos(2*pi*fm*t); %信源%N0 = 0.01; %白噪单边功率谱密度%DSB modulations_dsb = mt.*cos(2*pi*fc*t);B=2*fm;%noise = noise_nb(fc,B,N0,t);%s_dsb=s_dsb+noise;figure(1)subplot(311)plot(t,s_dsb);hold on; %画出DSB信号波形plot(t,mt,'r--'); %标示mt的波形title('DSB调制信号');xlabel('t');%DSB demodulationrt = s_dsb.*cos(2*pi*fc*t);rt = rt-mean(rt);[f,rf] = T2F(t,rt);[t,rt] = lpf(f,rf,2*fm);subplot(312)plot(t,rt); hold on;plot(t,mt/2,'r--');title('相干解调后的信号波形与输入信号的比较');xlabel('t')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');function [t st]=lpf(f,sf,B)%This function filter an input data using a lowpass filter %Inputs: f: frequency samples% sf: input data spectrum samples% B: lowpass's bandwidth with a rectangle lowpass%Outputs: t: time samples% st: output data's time samplesdf = f(2)-f(1);T = 1/df;hf = zeros(1,length(f));bf = [-floor( B/df ): floor( B/df )] + floor( length(f)/2 ); hf(bf)=1;yf=hf.*sf;[t,st]=F2T(f,yf);st = real(st);例1-8%显示模拟调制的波形及解调方法AM,文件mam.m%信源close all;clear all;dt = 0.001; %时间采样间隔fm=1; %信源最高频率fc=10; %载波中心频率T=5; %信号时长t = 0:dt:T;mt = sqrt(2)*cos(2*pi*fm*t); %信源%N0 = 0.01; %白噪单边功率谱密度%AM modulationA=2;s_am = (A+mt).*cos(2*pi*fc*t);B = 2*fm; %带通滤波器带宽%noise = noise_nb(fc,B,N0,t); %窄带高斯噪声产生%s_am = s_am + noise;figure(1)subplot(311)plot(t,s_am);hold on; %画出AM信号波形plot(t,A+mt,'r--'); %标示AM的包络title('AM调制信号及其包络');xlabel('t');%AM demodulationrt = s_am.*cos(2*pi*fc*t); %相干解调rt = rt-mean(rt);[f,rf] = T2F(t,rt);[t,rt] = lpf(f,rf,2*fm); %低通滤波subplot(312)plot(t,rt); hold on;plot(t,mt/2,'r--');title('相干解调后的信号波形与输入信号的比较'); xlabel('t')subplot(313)[f,sf]=T2F(t,s_am);psf = (abs(sf).^2)/T;plot(f,psf);axis([-2*fc 2*fc 0 max(psf)]);title('AM信号功率谱');xlabel('f');例 1-9%显示模拟调制的波形及解调方法SSB,文件mssb.m%信源close all;clear all;dt = 0.001; %时间采样间隔fm=1; %信源最高频率fc=10; %载波中心频率T=5; %信号时长t = 0:dt:T;mt = sqrt(2)*cos(2*pi*fm*t); %信源%N0 = 0.01; %白噪单边功率谱密度%SSB modulations_ssb = real( hilbert(mt).*exp(j*2*pi*fc*t) );B=fm;%noise = noise_nb(fc,B,N0,t);%s_ssb=s_ssb+noise;figure(1)subplot(311)plot(t,s_ssb);hold on; %画出SSB信号波形plot(t,mt,'r--'); %标示mt的波形title('SSB调制信号');xlabel('t');%SSB demodulationrt = s_ssb.*cos(2*pi*fc*t);rt = rt-mean(rt);[f,rf] = T2F(t,rt);[t,rt] = lpf(f,rf,2*fm);subplot(312)plot(t,rt); hold on;plot(t,mt/2,'r--');title('相干解调后的信号波形与输入信号的比较');xlabel('t')subplot(313)[f,sf]=T2F(t,s_ssb);psf = (abs(sf).^2)/T;plot(f,psf);axis([-2*fc 2*fc 0 max(psf)]);title('SSB信号功率谱');xlabel('f');例 2-0%显示模拟调制的波形及解调方法VSB,文件mvsb.m%信源close all;clear all;dt = 0.001; %时间采样间隔fm=5; %信源最高频率fc=20; %载波中心频率T=5; %信号时长t = 0:dt:T;mt = sqrt(2)*( cos(2*pi*fm*t)+sin(2*pi*0.5*fm*t) ); %信源%VSB modulations_vsb = mt.*cos(2*pi*fc*t);B=1.2*fm;[f,sf] = T2F(t,s_vsb);[t,s_vsb] = vsbpf(f,sf,0.2*fm,1.2*fm,fc);figure(1)subplot(311)plot(t,s_vsb);hold on; %画出VSB信号波形plot(t,mt,'r--'); %标示mt的波形title('VSB调制信号');xlabel('t');%VSB demodulation[f,rf] = T2F(t,rt);[t,rt] = lpf(f,rf,2*fm);subplot(312)plot(t,rt); hold on;plot(t,mt/2,'r--');title('相干解调后的信号波形与输入信号的比较');xlabel('t')subplot(313)[f,sf]=T2F(t,s_vsb);psf = (abs(sf).^2)/T;plot(f,psf);axis([-2*fc 2*fc 0 max(psf)]);title('VSB信号功率谱');xlabel('f');function [t,st]=vsbpf(f,sf,B1,B2,fc)%This function filter an input by an residual bandpass filter %Inputs: f: frequency samples% sf: input data spectrum samples% B1: residual bandwidth% B2: highest freq of the basedband signal%Outputs: t: frequency samples% st: output data's time samplesdf = f(2)-f(1);T = 1/df;hf = zeros(1,length(f));bf1 = [floor( (fc-B1)/df ): floor( (fc+B1)/df )] ;bf2 = [floor( (fc+B1)/df )+1: floor( (fc+B2)/df )];f1 = bf1 + floor( length(f)/2 ) ;f2 = bf2 + floor( length(f)/2 ) ;stepf = 1/length(f1);hf(f1)=0:stepf:1-stepf;hf(f2)=1;f3 = -bf1 + floor( length(f)/2 ) ;f4 = -bf2 + floor( length(f)/2) ;hf(f3)=0:stepf:(1-stepf);hf(f4)=1;yf=hf.*sf;[t,st]=F2T(f,yf);st = real(st);例 2-1%显示模拟调制的波形及解调方法AM、DSB、SSB,%信源close all;clear all;dt = 0.001;fm=1;fc=10;t = 0:dt:5;N0 = 0.1;%AM modulationA=2;s_am = (A+mt).*cos(2*pi*fc*t);B = 2*fm;noise = noise_nb(fc,B,N0,t); s_am = s_am + noise;figure(1)subplot(321)plot(t,s_am);hold on;plot(t,A+mt,'r--');%AM demodulationrt = s_am.*cos(2*pi*fc*t);rt = rt-mean(rt);[f,rf] = T2F(t,rt);。
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信号进行解调和信号恢复。
通信原理OOK信号MATLAB仿真

%%%%%%% 通信原理OOK信号仿真、功率谱和相干解调分析演示clcclose allclear allcodn=60; % 仿真的码元个数fc=6e+3; % 载波频率fs=fc*6; % 数据采样率bode=1000; % 信号波特率code=round(rand(1,codn)); % 产生随机信码(round:最近整数四舍五入)code_len=round(1/bode/(1/fs)); % 得到一个码元周期的数据长度for i=1:codn % 产生数字基带信号x((i-1)*code_len+1:code_len*i)=code(i);endcar=cos(2*pi*fc/fs*(0:length(x)-1)); % 产生载波y=x.*car; % ook信号等于单极性数字基带信号乘以载波figuresubplot(211)plot(x)axis([0 length(x) -0.5 1.5])grid onzoom ontitle('原始基带信号')subplot(212)plot(y)zoom ongrid ontitle('OOK信号')ay=abs(fft(y)); % 进行幅频特性分析f=0:fs/length(y):fs/2;ay=ay(1:length(f));figureplot(f,ay)zoom ongrid ontitle('OOK的频谱')z=y.*car; % 相干解调fl=fir1(64,fc/fs*2); % 低通滤波z=2*filter(fl,1,z);figuresubplot(211)plot(x)axis([0 length(x) -0.5 1.5])grid ontitle('原始基带信号')subplot(212)plot(z)axis([0 length(x) -0.5 1.5])grid ontitle('解调得到的基带信号')zoom on。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的 (1)二、实验题目 (1)三、实验内容 (1)3.1傅里叶变换与傅里叶反变换 (1)3.2题目一:正弦信号波形及频谱 (2)3.2.1仿真原理及思路 (2)3.2.2程序流程图 (3)3.2.3仿真程序及运行结果 (3)3.2.4实验结果分析 (5)3.3题目二:单极性归零(RZ)波形及其功率谱 (5)3.3.1仿真原理及思路 (5)3.3.2程序流程图 (6)3.3.3仿真程序及运行结果 (6)3.3.4实验结果分析 (8)3.4题目三:升余弦滚降波形的眼图及其功率谱 (8)3.4.1仿真原理及思路 (8)3.4.2程序流程图 (8)3.4.3仿真程序及运行结果 (8)3.4.4实验结果分析: (10)3.5题目四:完成PCM编码及解码的仿真 (11)3.5.1仿真原理及思路 (11)3.5.2程序流程图 (12)3.5.3仿真程序及运行结果 (12)3.5.4实验结果分析 (15)3.6附加题一:最佳基带系统的Pe~Eb\No曲线,升余弦滚降系数a=0.5,取样值的偏差是Ts/4 (16)3.6.1仿真原理及思路 (16)3.6.2程序流程图 (16)3.6.3仿真程序及运行结果 (16)3.6.4实验结果分析 (18)3.7附加题二:试作出Pe~Eb/No曲线。
升余弦滚降系数a=0.5,取样时间无偏差,但信道是多径信道,C(f)=|1-0.5-j2 ft|,t=T s/2 (18)3.7.1仿真原理及思路 (18)3.7.2程序流程图 (19)3.7.3仿真程序及运行结果 (19)3.7.4实验结果分析 (21)四、实验心得 (21)一、 实验目的⏹ 学会MATLAB 软件的最基本运用。
MATLAB 是一种很实用的数学软件,它易学易用。
MATLAB 对于许多的通信仿真类问题来说是很合适的。
⏹ 了解计算机仿真的基本原理及方法,知道怎样通过仿真的方法去研究通信问题。
⏹ 加深对通信原理课程有关内容的理解。
二、 实验题目◆ 必做题:1) 正弦信号波形及频谱;2) 单极性归零(RZ )波形及其功率谱,占空比为50%;3) 升余弦滚降波形的眼图及其功率谱。
滚降系数为0.5。
发送码元取值为0、2。
◆ 选做题:完成PCM 编码及解码的仿真。
◆ 附加题:1) 最佳基带系统的Pe~Eb\No 曲线,升余弦滚降系数a=0.5,取样值的偏差是Ts/4;2) 试作出Pe ~Eb/No 曲线。
升余弦滚降系数a =0.5,取样时间无偏差,但信道是多径信道,-j2 ft C(f)=|1-0.5|,t=Ts/2。
三、 实验内容3.1 傅里叶变换与傅里叶反变换对于确定信号()f t ,其傅里叶变换为:2()()j ft F f f t e dt π∞--∞=⎰()F f 傅里叶反变换为:2()()j ft f t F f e df π∞-∞=⎰在通信原理仿真中,傅里叶变换与傅里叶反变换会经常用到,我们可以利用MATLAB 的快速傅里叶变换函数fft 与快速傅里叶反变换函数ifft 编写傅里叶变换子程序与傅里叶反变换子程序。
其程序代码如下:傅里叶变换子程序:%傅里叶变换子程序 function X=t2f(x)global dt df N t f T %X=t2f(x)%x 为时域的取样值矢量 %X 为x 的傅氏变换%X 与x 长度相同,并为2的整幂。
%本函数需要一个全局变量dt(时域取样间隔) H=fft(x);X=[H(N/2+1:N),H(1:N/2)].*dt; end傅里叶反变换子程序: %傅里叶反变换子程序 function x=f2t(X)global dt df t f T N %x=f2t(X)%x 为时域的取样值矢量 %X 为x 的傅氏变换%X 与x 长度相同并为2的整幂%本函数需要一个全局变量dt(时域取样间隔) X=[X(N/2+1:N),X(1:N/2)]; x=ifft(X)/dt;%x=[tmp(N/2+1:N),tmp(1:N/2)]; end3.2 题目一:正弦信号波形及频谱 3.2.1仿真原理及思路一般来说,任意信号s t ()是定义在时间区间()-∞+∞,上的连续函数,但所有计算机的CPU 都只能按指令周期离散运行,同时计算机也不能处理()-∞+∞,这样一个时间段。
为此我们把s t ()按区间-⎡⎣⎢⎤⎦⎥T 2, T 2截短为s t T (),再对s t T ()按时间间隔∆t 均匀取样得到T t ∆个样值。
仿真时我们用这个样值集合来表示信号s t ()。
显然∆t 反映了仿真系统对信号波形的分辨率,∆t 越小则仿真的精确度越高。
据通信原理所学,信号被取样以后的频谱是频率的周期函数,其重复周期是1∆t。
如果信号的最高频率为f H ,那么必须有f t H ≤12∆才能保证不发生混叠失真。
我们称B t s =12∆为仿真系统的系统带宽。
如果我们的仿真程序中设定的采样间隔是∆t ,那么我们不能用此仿真程序来研究带宽大于B s 的信号或系统。
此外,信号s t ()的频谱()S f 通常来说也是定义在频率区间()-∞+∞,上的连续函数,所以仿真频域特性时,我们也必须把()S f 截短并取样。
考虑到系统带宽是B s ,我们把频域的截短区间设计为[]-B B s s , ,然后再按间隔∆f 均匀取样得到2B fs∆个样值。
∆f 反映了仿真系统在频域上的分辨率。
频域离散的信号对应到时域是一个周期信号,其周期为1∆f。
类似前面的分析,如果我们的仿真程序中设定的采样间隔是∆f ,那么我们就不能仿真截短时间超过1∆f的信号。
考虑到时域截短时间为T ,我们把频域的取样间隔设计为∆f T=1。
这样一来,时域的总取样点数及频域的总取样点数都相等,为N t f=1∆∆。
要提高仿真的精度,就必须降低时域取样间隔∆t 及频域取样间隔∆f ,也就是要加大总取样点数N 。
这说明仿真的精度与仿真系统的运算量直接有关。
为了处理上的方便,我们今后规定采样点数N 为2的整幂。
首先,设定正弦信号的采样点数为2k ,时域采样间隔为0.01dt =,频域采样间隔为1/(*)df N dt =,所以定义一个时域t 的N 维矢量(/2,/2,)t linspace T T N =-,定义一个频域f 的N 维矢量(,,)f linspace Bs Bs N =-;其次,定义一个余弦函数0cos(2/3***)s pi f t =,其中01f =,并对其进行傅里叶变换及傅里叶反变换;最后,画出该余弦函数波形图与频谱图。
3.2.2程序流程图3.2.3仿真程序及运行结果仿真程序:%实验一:正弦信号波形及其频谱 close all clear allglobal dt df N t f T %全局变量 N=2^14; %采样点数 dt=0.01; %时域采样间隔 df=1/(N*dt);%频域采样间隔 T=N*dt; %截短时间 Bs=N*df/2; %系统带宽 t=linspace(-T/2,T/2,N); f=linspace(-Bs,Bs,N);产生余弦信号及频谱流程图s=sin(2/3*pi*t);S=t2f(s);a=f2t(S);figure(1)set(1,'Position',[10,350,600,200])%设定窗口位置及大小figure(2)set(2,'Position',[10,50,600,200])%设定窗口位置及大小figure(1)as=abs(S); %求模plot(f,as)axis([-2,+2, 1.1*min(as), 1.1*max(as)])xlabel('f (MHz)')ylabel('Ps(f)')grid onfigure(2)plot(t,a)axis([-5,5,1.1*min(a),1.1*max(a)]);xlabel('t')ylabel('s(t)')grid on程序运行结果:取样点数=2^k,k=14,得到如下波形:3.2.4实验结果分析由上图可以看出,余弦函数的频谱为两个脉冲信号的叠加,两个脉冲信号分别在13f =+和13f =-处。
3.3 题目二:单极性归零(RZ )波形及其功率谱 3.3.1仿真原理及思路功率信号f (t)的平均功率:()Tf TTT P P(f )df limf t dt∞+-∞-→∞==⎰⎰212。
该信号的双边功率谱密度P(f )为:T T F (f )P(f )lim T→∞=2,其中S f T ()是s t ()截短后的傅氏变换,S f T ()2是s t T ()的能量谱,()S f TT 2是s t T ()在截短时间内的功率谱。
对于仿真系统,若x 是时域取样值矢量,X 是对应的傅氏变换,那么x 的功率谱便为矢量P=(X.*conj(X))/T 。
对于采用归零(RZ )及不归零(NRZ )矩形脉冲波形的数字信号,可以用简单的方法信号矢量s 。
设a 是码元矢量,N 是总取样点数,M 是总码元数,L 是每个码元内的点数,那么NRZ 信号可这样获得:s=zeros(1,N);for ii=1:L, s(ii+[0:M-1]*L)=a; end对于,若Rt 是要求的占空比,dt 是仿真系统的时域采样间隔,则RZ 信号的产生方法是:s=zeros(1,N);for ii=1:Rt/dt, s(ii+[0:M-1]*L)=a; end 首先,利用rand 函数产生一个尺寸为1*M 的矩阵,其元素按均匀分布随机取值于区间[0,1],并用round 函数对其四舍五入,得到一个随机产生的0,1序列;其次,利用for 循环产生码元长度为L 点,码元为0,1,且占空比为50%的单极性归零码,并画出其波形图;最后,计算该RZ 的功率谱密度,并画出其波形。
3.3.2程序流程图3.3.3仿真程序及运行结果仿真程序:%实验二:画出单极性归零码及其功率谱close allclear allglobal dt t df NN=2^14; %采样点数L=64; %每码元的采样点数M=N/L; %码元数Rb=2; %码速率为2Mb/sTs=1/Rb; %码元间隔dt=Ts/L; %时域采样间隔Rt=0.5; %占空比df=1/(N*dt); %频域采样间隔T=N*dt; %截短时间Bs=N*df/2; %系统带宽t=linspace(-T/2,T/2,N); %时域横坐标f=linspace(-Bs,Bs,N); %频域横坐标EP=zeros(1,N);for jj=1:100a=round(rand(1,M)); %产生M个取值0,1等概的随机码s=zeros(1,N); %产生一个N个元素的零序列for ii=1:Rt*Ts/dts(ii+[0:M-1]*L)=a;%产生单极性归零码endQ=t2f(s); %付氏变换P=Q.*conj(Q)/T; %P为单极性归零码的功率EP=(EP*(jj-1)+P)/jj; %累计平均endaa=30+10*log10(EP+eps);%加eps以避免除以零figure(1)set(1,'Position',[10,350,600,200])%设定窗口位置及大小figure(2)set(2,'Position',[10,50,600,200])%设定窗口位置及大小figure(1)plot(f,aa,'g')xlabel('f(MHZ)')ylabel('Ps(f)')axis([-15,+15, 1.1*min(aa), 1.1*max(aa)])grid onfigure(2)plot(t,s,'r')xlabel('t(ms)')ylabel('s(t)(V)')axis([-10,+10,1.1*min(s),1.1*max(s)])grid on程序结果:输入取样点数=2^k,k=14,得到如下波形:3.3.4 实验结果分析由上图结果可以看单极性归零码序列的功率谱密度不仅含有离散的直流分量及连续谱,而且还包含离散的时钟分量和奇次谐波分量,功率谱主瓣宽度为码元速率2Rb Mb/s 。