射频和无线供应商和资源的家

一站式满足您的射频和无线需求

OFDM MATLAB代码

本节涵盖MATLAB源代码OFDM发射机而且OFDM接收机编码的基本链matlab

本页涵盖了基本的OFDM发射机链,即二进制数据源,数据映射,IFFT,CP插入。该时域数据被传递给信道和AWGN。OFDM接收机由CP去除、FFT、数据解映射和相同数据的解码组成。

OFDM发射机部分

clc;
清除所有;
关闭所有;
%..............................................................
%初始化
%..............................................................
no_of_data_bits = 64%每个通道扩展到128的比特数
M = 4%子载波信道数
n=256;%发射机要传输的总比特数
Block_size = 16;用于添加循环前缀的每个OFDM块的大小
Cp_len = floor(0.1 * block_size);%循环前缀长度
%............................................................
%发射机
%.........................................................
%.........................................................
源的产生和调制
%........................................................
生成要传输的长度为64的随机数据源
data = randsrc(1, no_of_data_bits, 0:M-1);
图(1)中,茎(数据);网格;包含(“数据点”);ylabel(振幅)
标题(“原始资料”)
对输入源数据进行QPSK调制
qpsk_modulated_data = pskmod(data, M);
图(2),stem(qpsk_modulated_data);title('QPSK调制')
%............................................................
%.............................................................
将串联数据流转换为四个并行数据流形成
%四艘子航母
S2P =重塑(qpsk_modulated_data, no_of_data_bits/M,M)
Sub_carrier1 = S2P(:,1)
Sub_carrier2 = S2P(:,2)
Sub_carrier3 = S2P(:,3)
Sub_carrier4 = S2P(:,4)
图(3),subplot(4,1,1),stem(Sub_carrier1),标题('Subcarrier1'),网格上;
次要情节(4、1、2),茎(Sub_carrier2)、标题(“Subcarrier2”),网格;
次要情节(4 1 3),茎(Sub_carrier3)、标题(“Subcarrier3”),网格;
次要情节(4、1,4),茎(Sub_carrier4)、标题(“Subcarrier4”),网格;
%..................................................................
%..................................................................
四个子载波的% ifft
%.................................................................
%..............................................................
number_of_subcarriers = 4;
cp_start = block_size-cp_len;
ifft_Subcarrier1 = ifft(Sub_carrier1)
ifft_Subcarrier2 = ifft(Sub_carrier2)
ifft_Subcarrier3 = ifft(Sub_carrier3)
ifft_Subcarrier4 = ifft(Sub_carrier4)
图(4),次要情节(4 1 1),情节(真正的(ifft_Subcarrier1),“r”),
title(“所有子运营商的IFFT”)
次要情节(4、1、2),图(真正的(ifft_Subcarrier2),“c”)
次要情节(4 1 3),情节(真正的(ifft_Subcarrier3),“b”)
次要情节(4,4)、情节(真正的(ifft_Subcarrier4),“g”)
%...........................................................
%...........................................................
% ADD-CYCLIC前缀 %..........................................................
%............................................................
i = 1: number_of_subcarriers,
ifft_Subcarrier(:,i) = ifft((S2P(:,i)),16)% 16是ifft点
j = 1: cp_len,
cyclic_prefix(j,i) = ifft_Subcarrier(j+cp_start,i)
结束
Append_prefix(:,i) = vertcat(cyclic_prefix(:,i), ifft_Subcarrier(:,i))
%为每个子载波附加前缀
结束
A1 = Append_prefix (: 1);
A2 = Append_prefix (:, 2);
A3 = Append_prefix (: 3);
A4 = Append_prefix (: 4);
图(5),子图(4,1,1),图(real(A1),'r'),标题('添加到所有子载波的循环前缀')
次要情节(4、1、2),图(真正的(A2),“c”)
次要情节(4 1 3),情节(真正的(A3),“b”)
次要情节(4,4)、情节(真正的(A4),“g”)
图(11),图((真实的(A1)),“r”)、标题(“正交性”),等等,情节((真正的(A2)),“c”),等等,
情节(真正的(A3)), b),等等,情节((真实的(A4)),“g”),等等,网格上
转换为串行流进行传输
[rows_Append_prefix cols_Append_prefix] =大小(Append_prefix)
len_ofdm_data = rows_Append_prefix*cols_Append_prefix
要发送的OFDM信号
ofdm_signal =重塑(Append_prefix, 1, len_ofdm_data);
图(6),情节(真正的(ofdm_signal));包含(的时间);ylabel(振幅);
标题('OFDM信号');
%...............................................................

通过信道和AWGN传递时域数据

%.............................................................
通道= randn(1,2) +√(-1)*randn(1,2);
After_channel = filter(channel, 1, ofdm_signal);
Awgn_noise = awgn(零(1,长度(after_channel)),0);
Recvd_signal = awgn_noise+after_channel;%带有AWGN噪声
图(7),情节(真实的(recvd_signal)),包含(的时间);ylabel(振幅);
标题('通过信道后的OFDM信号');
%...........................................................

OFDM接收部分

%..........................................................
recvd_signal_parallel =重塑(recvd_signal,rows_Append_prefix, cols_Append_prefix);
%........................................................
%........................................................
删除循环前缀
%.......................................................
%......................................................
recvd_signal_paralleled (1: cp_len:) = [];
R1 = recvd_signal_paralleled (: 1);
R2 = recvd_signal_paralleled (:, 2);
R3 = recvd_signal_paralleled (: 3);
R4 = recvd_signal_paralleled (: 4);
图(8),情节(图像放大(R1)),“r”),次要情节(4 1 1),情节(真正的(R1),“r”),
title('从四个子载波中删除循环前缀')
次要情节(4、1、2),图(真正的(R2),“c”)
次要情节(4 1 3),情节(真正的(R3),“b”)
次要情节(4,4)、情节(真正的(R4),“g”)
%...................................................
%...................................................
FFT接收信号的百分比
i = 1: number_of_subcarriers,
% FFT
fft_data (:, i) = fft (recvd_signal_paralleled(:,我),16);
结束
F1 = fft_data (: 1);
F2 = fft_data (:, 2);
F3 = fft_data (: 3);
F4 = fft_data (: 4);
图(9),subplot(4,1,1),plot(real(F1),'r'),title('所有四个子载体的FFT ')
次要情节(4、1、2),图(真正的(F2),“c”)
次要情节(4 1 3),情节(真正的(F3),“b”)
次要情节(4,4)、情节(真正的(F4),“g”)
%................................
%..............................
%信号重构
%..................................
%..................................
转换为串行和解调a
Recvd_serial_data =重塑(fft_data, 1,(16*4));
Qpsk_demodulated_data = pskdemod(recvd_serial_data,4);
图(10)
茎(数据)
抓住
茎(qpsk_demodulated_data rx);
xlabel('Data Points');ylabel('Amplitude');
标题('接收到的信号有错误')

OFDM基本Tx-Rx链

OFDM MATLAB仿真代码

上面的块原理图的ofdm matlab代码提供如下下载。本例中的OFDM发射机由FEC编码器、BPSK调制器和256点IFFT组成。OFDM接收部分由FFT、BPSK解调器和维特比解码器组成。

下面所述的OFDM matlab模型的误码率曲线是通过AWGN信道的发射机数据后得到的。



的误码率曲线

OFDM误码率曲线

下载源代码

下载OFDM MATLAB源代码文件如上框图所示。

MATLAB代码的有用链接

参考以下以及左边面板上提到的链接,以获得有用的MATLAB代码。
PTS用于降低PAPR
OFDM前导信号的产生
时间偏差估计
频率估计
信道估计
11a WLAN信道
11g WLAN信道
15.3超宽带通道
15.4a UWB信道
16d SUI通道
16e wimax信道
Rician通道

射频和无线教程

无线局域网802.11交流802.11广告wimax无线个域网z - waveGSMLTEUMTS蓝牙超宽频物联网卫星天线雷达


分享本页

翻译本页
Baidu