OFCDM
本节的MATLAB源代码覆盖OFCDM MATLAB代码。OFCDM代表正交频分复用的代码。
OFCDM是CDMA和OFDM技术的结合。在这个例子中,OFCDM发射机显示与选举委员会的编码器(卷积编码器),BPSK调制,传播模块和传输线模块256点。接收器是由FFT、despreading BPSK解调和维特比译码器。
以下是OFCDM MATLAB代码和误码率曲线。后得到的误码率曲线从AWGN传递数据。
OFCDM MATLAB代码
关闭所有;
清除所有;
clc;
n1 = 1;
n2 = 14;
FFT_SIZE = 256;
% CP = 16;
conv_in = [];
% %数据生成器
Data_gen = randint (11255)
Data_IN = dec2bin (Data_gen);
s = 0;
% %系统参数
EbNo = 0:1:15;
1 = 0(1、长度(EbNo));
numPackets = 15;
frmLen = 1000;
idx = 1:长度(EbNo)
packetidx = 1: numPackets
% %卷积编码器
conv_in = [];
指数= 1:11
conv_in = [conv_in双(Data_IN(指数:))-48];
结束
conv_in = [conv_in 0 0 0 0 0 0 0 0];% % 8位填充
喧嚣= conv_in;
灵(= poly2trellis (7 (171 133));%定义框架。
代码= convenc (conv_in、灵();
inter_out =代码;
% % BPSK数据映射
mapper_out =映射(inter_out ', 1);
清楚inter_out;
D = mapper_out;
% % CDMA发射机
%编码和传输
% CDMA的具体参数
C = [1 1 1 1];%为用户代码将增加% # 1 i.e.mapper_out数据流的用户
M =长度(C);%的长度(位数)的代码
Y =大小(mapper_out);
N = Y (1);%的独特的发送方/比特流
我= Y (2);%每个流的比特数
T = [];%的总和所有传输和编码的数据通道
侦察= [];%的重建比特向量接收器
G = 0(我);
为n = 1: n
Z = 0(我);
因为我= 1:我
m = 1: m
Z(我)= (D (n,我)* C (n, m)];
结束
结束
G = G + Z;% G是传输线后要传输的数据
结束
ifft_in = 0 (256 4);
因为我= 1:4
ifft_in(:,我)= [0;G(1:96,我);0(32岁,1),0(31日1),G(97:192,我)];
结束
因为我= 1:4
tx_data (:, i) =传输线(ifft_in(:,我));
结束
清楚ifft_in;
% %通过AWGN信道传递数据
rx_data = 0 (256 4);
rx_data1 = 0 (192 4);
因为我= 1:4
rx_data (:, i) = awgn (tx_data(:,我)。/√(16),EbNo (idx),“测量”);
结束
因为我= 1:4
rx_data (:, i) = awgn (rx_data(:,我)。/√(16),EbNo (idx),“测量”);
结束
因为我= 1:4
rx_data (:, i) = awgn (rx_data(:,我)。/√(16),EbNo (idx),“测量”);
结束
% % OFCDM接收机部分:
% % FFT后噪声数据的接收
清楚tx_data;
因为我= 1:4
rx_data (:, i) = fft (rx_data(:,我));
结束
因为我= 1:4
rx_data1 (:, i) = [rx_data(2:97,我);rx_data(161:256,我)];%取出用户despreading # 1符号
结束
G = rx_data1;
% % CDMA接收机
为n = 1: n
我合计= 0 (1);
R = 0(我);
因为我= 1:我
m = 1: m
R(我)= G(我)* C (n, m);
合计(i) =合计(i) + R(我);
结束
结束
侦察=[侦察;合计/ M];
结束
侦察
rx_data1 =侦察;
Demap_out = demapper (rx_data1 1 1);
% %维特比译码器
vit_out = vitdec (Demap_out灵(7,“trunc”,“硬”);
DOUT = vit_out
(数量、比例)= biterr(喧嚣,vit_out);
错误(packetidx) = biterr(喧嚣,vit_out);
结束% numPackets for循环的结束
BER21 (idx) =总和(错误)/ (log2 (4) * numPackets * frmLen);
结束
h = gcf; clf (h);网格;抓住;
集(gca,‘yscale’,‘日志’,‘xlim’, [EbNo (1) EbNo(结束)],“ylim”, [0 1]);
包含(Eb /不(dB));ylabel(“方方面面”);集(h,“NumberTitle”,“关闭”);
集(h,“名字”,方方面面的结果);
集(h,渲染器,“zbuffer”);标题(“OFCDM误码率阴谋”);
semilogy (EbNo(1:结束),BER21(1:结束),b - *);
清除所有;
clc;
n1 = 1;
n2 = 14;
FFT_SIZE = 256;
% CP = 16;
conv_in = [];
% %数据生成器
Data_gen = randint (11255)
Data_IN = dec2bin (Data_gen);
s = 0;
% %系统参数
EbNo = 0:1:15;
1 = 0(1、长度(EbNo));
numPackets = 15;
frmLen = 1000;
idx = 1:长度(EbNo)
packetidx = 1: numPackets
% %卷积编码器
conv_in = [];
指数= 1:11
conv_in = [conv_in双(Data_IN(指数:))-48];
结束
conv_in = [conv_in 0 0 0 0 0 0 0 0];% % 8位填充
喧嚣= conv_in;
灵(= poly2trellis (7 (171 133));%定义框架。
代码= convenc (conv_in、灵();
inter_out =代码;
% % BPSK数据映射
mapper_out =映射(inter_out ', 1);
清楚inter_out;
D = mapper_out;
% % CDMA发射机
%编码和传输
% CDMA的具体参数
C = [1 1 1 1];%为用户代码将增加% # 1 i.e.mapper_out数据流的用户
M =长度(C);%的长度(位数)的代码
Y =大小(mapper_out);
N = Y (1);%的独特的发送方/比特流
我= Y (2);%每个流的比特数
T = [];%的总和所有传输和编码的数据通道
侦察= [];%的重建比特向量接收器
G = 0(我);
为n = 1: n
Z = 0(我);
因为我= 1:我
m = 1: m
Z(我)= (D (n,我)* C (n, m)];
结束
结束
G = G + Z;% G是传输线后要传输的数据
结束
ifft_in = 0 (256 4);
因为我= 1:4
ifft_in(:,我)= [0;G(1:96,我);0(32岁,1),0(31日1),G(97:192,我)];
结束
因为我= 1:4
tx_data (:, i) =传输线(ifft_in(:,我));
结束
清楚ifft_in;
% %通过AWGN信道传递数据
rx_data = 0 (256 4);
rx_data1 = 0 (192 4);
因为我= 1:4
rx_data (:, i) = awgn (tx_data(:,我)。/√(16),EbNo (idx),“测量”);
结束
因为我= 1:4
rx_data (:, i) = awgn (rx_data(:,我)。/√(16),EbNo (idx),“测量”);
结束
因为我= 1:4
rx_data (:, i) = awgn (rx_data(:,我)。/√(16),EbNo (idx),“测量”);
结束
% % OFCDM接收机部分:
% % FFT后噪声数据的接收
清楚tx_data;
因为我= 1:4
rx_data (:, i) = fft (rx_data(:,我));
结束
因为我= 1:4
rx_data1 (:, i) = [rx_data(2:97,我);rx_data(161:256,我)];%取出用户despreading # 1符号
结束
G = rx_data1;
% % CDMA接收机
为n = 1: n
我合计= 0 (1);
R = 0(我);
因为我= 1:我
m = 1: m
R(我)= G(我)* C (n, m);
合计(i) =合计(i) + R(我);
结束
结束
侦察=[侦察;合计/ M];
结束
侦察
rx_data1 =侦察;
Demap_out = demapper (rx_data1 1 1);
% %维特比译码器
vit_out = vitdec (Demap_out灵(7,“trunc”,“硬”);
DOUT = vit_out
(数量、比例)= biterr(喧嚣,vit_out);
错误(packetidx) = biterr(喧嚣,vit_out);
结束% numPackets for循环的结束
BER21 (idx) =总和(错误)/ (log2 (4) * numPackets * frmLen);
结束
h = gcf; clf (h);网格;抓住;
集(gca,‘yscale’,‘日志’,‘xlim’, [EbNo (1) EbNo(结束)],“ylim”, [0 1]);
包含(Eb /不(dB));ylabel(“方方面面”);集(h,“NumberTitle”,“关闭”);
集(h,“名字”,方方面面的结果);
集(h,渲染器,“zbuffer”);标题(“OFCDM误码率阴谋”);
semilogy (EbNo(1:结束),BER21(1:结束),b - *);
的误码率曲线
下载源代码
MATLAB的有用链接代码
参考以下以及链接提到左侧面板上有用的MATLAB代码。
OFDM序言代时间估计corr频率下估计corr信道估计11 WLAN通道PN序列生成OFDMA Tx的处方AES DES载波聚合CCDF冷杉过滤器IIR滤波器低通冷杉维特比译码器CRC8 CRC32
射频和无线教程
无线局域网802.11交流802.11广告wimax无线个域网z - waveGSMLTEUMTS蓝牙超宽频物联网卫星天线雷达