【MATLAB源码-第17期】基于matlab的OFDM系统误码率仿真,编码方式采用卷积码码率分别为1/2 ,1/3译码方式为viterbi译码;调制解调方式采用QPSK;所有函数的实现均是手动实现。

5 篇文章 0 订阅
2 篇文章 0 订阅
本文详细介绍了使用MATLAB实现的OFDM(正交频分复用)和QPSK(四相移键控)调制技术,配合卷积码进行编码,并利用Viterbi算法进行解码,以实现高速、可靠的无线通信。文章提供了关键代码示例和误码率仿真结果。
摘要由CSDN通过智能技术生成

操作环境:

MATLAB 2022a

1、算法描述

1. **OFDM(正交频分复用)**:OFDM 是一种无线通信技术,主要用于高速数据传输,尤其在移动通信和无线局域网中广泛应用。其基本原理是将高速数据流分成多个较低速的子载波,这些子载波之间是正交的,也就是说它们之间不会相互干扰。每个子载波携带了数据的一部分,因此总的数据流被分成多个并行传输的子流,从而提高了整体的数据传输速率。OFDM 可以有效地对抗多径干扰,因为子载波之间的正交性可以减少信号间的干扰。在接收端,各个子载波的数据被重新组合,以还原出原始的数据流。

2. **QPSK(四相移键控)**:QPSK 是一种数字调制技术,被广泛用于无线通信中。它将连续的两个比特映射到一个复数载波上的四个相位中的一个。这四个相位分别是 0 度、90 度、180 度和 270 度。在发送端,QPSK 将连续的两个比特编码为一个相位,然后根据相位对载波进行相应的相位调制。接收端通过检测相位变化,可以将每个符号解调为两个原始比特。因此,QPSK 可以在每个符号周期内传输两个比特,提高了频谱效率。

3. **卷积码编码率为1/2**:卷积码是一种纠错编码技术,它通过引入冗余信息来提高数据传输的可靠性。编码率为 1/2 表示,对于每个输入比特,生成两个编码比特。编码过程中,输入比特序列经过一组状态机和状态转移函数,生成编码比特序列。在发送端,这些编码比特被发送出去。在接收端,采用 Viterbi 算法等译码算法,从接收到的编码比特中恢复出原始的输入比特序列,同时进行纠错以纠正由于信道噪声引起的错误。

综合运用这三种技术,可以实现高速、可靠的无线通信,适应了现代无线通信系统对高数据传输速率和信号质量的需求。

2、仿真结果演示

3、关键代码展示

function [ratio]=ofdmqpsk_conv12(snr_in_dB)
%%
% Preparation part
bitrate = 64000; %Bit rate
nb_symbol =10;% Number of ofdm symbols every channel
p=1;
fftlength=512*p; % Number of subcarriers
cha=fftlength/p;
gi=fftlength/4; % Length of guard interval
m=2; % m=1 for qpsk
qm=sqrt(-1);
%%
% Data generation 
inputoriginal=randi([0,1],1,cha*nb_symbol*m);
%%
%******************** Encoding **********************
coderatio=1/2;
coderate=bitrate/coderatio;
symbolrate=coderate/(m*cha); % OFDM symbol rate 
fs = p*cha*symbolrate; % Sampling frequency (oversampled)
G=[1 0 1 1 0 1 1; 1 1 1 1 0 0 1];
k=1;
code=cnv_encd(G,k,inputoriginal);
code=[code zeros(1,1012)];
nb=length(code)/(cha*m);
%%
% Serial to parallel conversion
inputsymbol= reshape(code,cha,nb*m);
%%
% QPSK modulation
[~,~,premod]=qpskmodulation(inputsymbol,cha,nb,m);
%%
% IFFT
premod_ifft=ifft(premod);
ich1=real(premod_ifft);
qch1=imag(premod_ifft);
%%
% Guard interval insertion
ich2=[ich1(cha-gi+1:cha,:);ich1];
qch2=[qch1(cha-gi+1:cha,:);qch1];
%%
% Parallel to serial conversion
ich3=reshape(ich2,1,(cha+gi)*nb);
qch3=reshape(qch2,1,(cha+gi)*nb);
%%
% OFDM baseband modulation
mod=ich3+qch3.*qm;
%%
% Attenuation calculation
snr=10^(snr_in_dB/10);
psymbol=sum(abs(mod).^2)/(length(mod)*bitrate); % Divide by num of channel
%psymbol=sum(ich3.^2+qch3.^2)/(length(mod)*bitrate*cha);
np=(psymbol/snr)*fs;
attn=sqrt(0.5*np);
%%
% Add White Gaussian Noise
inoise=attn*randn(1,length(mod))+qm*attn*randn(1,length(mod));
modawgn=mod+inoise;
%%
% Serial to parallel conversion
idata=real(modawgn);
qdata=imag(modawgn);
idata1=reshape(idata,cha+gi,nb);
qdata1=reshape(qdata,cha+gi,nb);
%%
% Guard interval removal
idata2=idata1(gi+1:gi+cha,:);
qdata2=qdata1(gi+1:gi+cha,:);
%%
% FFT
demod=idata2+qdata2.*qm;
rex=fft(demod);
iout=real(rex);
qout=imag(rex);
%%
% QPSK demodulation
[out]=qpskdemodulation(iout,qout,cha,nb,m);
%%
% Parallel to serial conversion
output=reshape(out,1,cha*m*nb);
%%
% Bit Error Rate 
[decoded,~,~]=viterbi(G,k,output(1:length(output)-1012));
[~, ratio]=biterr(inputoriginal,decoded);

4、MATLAB 源码获取

点击下方链接获取
【MATLAB源码-第17期】基于matlab的OFDM系统误码率仿真,编码方式采用卷积码码率分别为1/2 ,1/3译码方式为viterbi译码;调制解调方式采用QPSK;所有函数的实现均是手动实现。_matlab 预留子载波法 代码-CSDN博客文章浏览阅读104次。每个子载波携带了数据的一部分,因此总的数据流被分成多个并行传输的子流,从而提高了整体的数据传输速率。在接收端,各个子载波的数据被重新组合,以还原出原始的数据流。在发送端,QPSK 将连续的两个比特编码为一个相位,然后根据相位对载波进行相应的相位调制。在接收端,采用 Viterbi 算法等译码算法,从接收到的编码比特中恢复出原始的输入比特序列,同时进行纠错以纠正由于信道噪声引起的错误。综合运用这三种技术,可以实现高速、可靠的无线通信,适应了现代无线通信系统对高数据传输速率和信号质量的需求。_matlab 预留子载波法 代码https://blog.csdn.net/Koukesuki/article/details/132602444?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171152400016800213034551%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171152400016800213034551&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-132602444-null-null.nonecase&utm_term=17%E6%9C%9F&spm=1018.2226.3001.4450

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值