基于MAtlab模拟TDMP LDPC 解码器模型和仿真

简介: 基于MAtlab模拟TDMP LDPC 解码器模型和仿真

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

手机电视系统为移动手机客户提供了丰富的数字音频视频信息,使用户能够随时随地获取最新的资讯和最优质的信息,其应用前景十分广阔.

⛄ 部分代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Create the parity check matrix for code rate 1/2, 2/3 and 3/4

% IEEE 802.16e standard (WiMAX)


function [H_index] = generate_ldpc_matrix_80216e(n, code_rate)


% Each H_index matrix has 24 columns (from hc1 to hc24)

% row permutation of H_index

% dimension of sub-matrix n x n;


% 19 modes for LDPC code, code rate = 1/2;


% Mode


% 1.  n =24, LDPC(576,288)

% 2.  n =28, LDPC(672,336)

% 3.  n =32, LDPC(768,384)

% 4.  n =36, LDPC(864,432)

% 5.  n =40, LDPC(960,480)

% 6.  n =44, LDPC(1056,528)

% 7.  n =48, LDPC(1152,576)

% 8.  n =52, LDPC(1248,624)

% 9.  n =56, LDPC(1344,672)

% 10. n =60, LDPC(1440,720)

% 11. n =64, LDPC(1536,768)

% 12. n =68, LDPC(1632,816)

% 13. n =72, LDPC(1728,864)

% 14. n =76, LDPC(1824,912)

% 15. n =80, LDPC(1920,960)

% 16. n =84, LDPC(2016,1008)

% 17. n =88, LDPC(2112,1056)

% 18. n =92, LDPC(2208,1104)

% 19. n =96, LDPC(2304,1152)


% 19 modes for LDPC code, code rate = 2/3B;


% Mode


% 1.  n =24, LDPC(576,384)

% 2.  n =28, LDPC(672,448)

% 3.  n =32, LDPC(768,512)

% 4.  n =36, LDPC(864,432)

% 5.  n =40, LDPC(960,576)

% 6.  n =44, LDPC(1056,704)

% 7.  n =48, LDPC(1152,768)

% 8.  n =52, LDPC(1248,832)

% 9.  n =56, LDPC(1344,896)

% 10. n =60, LDPC(1440,960)

% 11. n =64, LDPC(1536,1024)

% 12. n =68, LDPC(1632,1088)

% 13. n =72, LDPC(1728,1152)

% 14. n =76, LDPC(1824,1216)

% 15. n =80, LDPC(1920,1280)

% 16. n =84, LDPC(2016,1344)

% 17. n =88, LDPC(2112,1408)

% 18. n =92, LDPC(2208,1472)

% 19. n =96, LDPC(2304,1536)


if (mod(n,4) ~= 0 || n < 24 || n > 96)

 error('ldpc_matrix_80216e error: sub-matrix size is not supported');

end


k = 96;


switch code_rate

 

 case 1/2

   hc1 =  [-1;-1;-1;floor(61*n/k);-1;-1;-1;-1;floor(12*n/k);-1;-1;floor(43*n/k)];

   hc2 =  [floor(94*n/k);floor(27*n/k);-1;-1;-1;-1;-1;floor(11*n/k);-1;-1;-1;-1];

   hc3 =  [floor(73*n/k);-1;-1;floor(47*n/k);floor(39*n/k);-1;floor(95*n/k);floor(73*n/k);-1;-1;floor(7*n/k);-1];

   hc4 =  [-1;-1;floor(24*n/k);-1;-1;-1;floor(53*n/k);-1;-1;-1;floor(65*n/k);-1];

   hc5 =  [-1;-1;floor(22*n/k);-1;-1;floor(46*n/k);-1;-1;floor(83*n/k);-1;-1;-1];

   hc6 =  [-1;floor(22*n/k);floor(81*n/k);-1;-1;floor(40*n/k);-1;-1;floor(24*n/k);floor(94*n/k);-1;floor(66*n/k)];

   hc7 =  [-1;floor(79*n/k);-1;-1;floor(84*n/k);-1;-1;floor(2*n/k);-1;-1;-1;-1];

   hc8 =  [-1;floor(9*n/k);floor(33*n/k);-1;-1;floor(82*n/k);-1;-1;floor(43*n/k);floor(59*n/k);-1;floor(41*n/k)];

   hc9 =  [floor(55*n/k);-1;-1;floor(65*n/k);-1;-1;-1;-1;-1;-1;floor(39*n/k);-1];

   hc10 = [floor(83*n/k);-1;-1;floor(25*n/k);floor(41*n/k);-1;floor(14*n/k);floor(47*n/k);-1;-1;floor(49*n/k);-1];

   hc11 = [-1;-1;-1;-1;floor(72*n/k);-1;floor(18*n/k);-1;-1;floor(70*n/k);-1;-1];

   hc12 = [-1;floor(12*n/k);0;-1;-1;floor(79*n/k);-1;-1;floor(51*n/k);floor(72*n/k);-1;floor(26*n/k)];

   hc13 = [floor(7*n/k);-1;-1;-1;-1;0;-1;-1;-1;-1;-1;floor(7*n/k)];

   hc14 = [0;0;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1];

   hc15 = [-1;0;0;-1;-1;-1;-1;-1;-1;-1;-1;-1];

   hc16 = [-1;-1;0;0;-1;-1;-1;-1;-1;-1;-1;-1];

   hc17 = [-1;-1;-1;0;0;-1;-1;-1;-1;-1;-1;-1];

   hc18 = [-1;-1;-1;-1;0;0;-1;-1;-1;-1;-1;-1];

   hc19 = [-1;-1;-1;-1;-1;0;0;-1;-1;-1;-1;-1];

   hc20 = [-1;-1;-1;-1;-1;-1;0;0;-1;-1;-1;-1];

   hc21 = [-1;-1;-1;-1;-1;-1;-1;0;0;-1;-1;-1];

   hc22 = [-1;-1;-1;-1;-1;-1;-1;-1;0;0;-1;-1];

   hc23 = [-1;-1;-1;-1;-1;-1;-1;-1;-1;0;0;-1];

   hc24 = [-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;0;0];

   

   H_index = cat(2,hc1,hc2,hc3,hc4,hc5,hc6,hc7,hc8,hc9,hc10,hc11,hc12,...

     hc13,hc14,hc15,hc16,hc17,hc18,hc19,hc20,hc21,hc22,hc23,hc24);

   

   % temp_H = [row_1,row_3,row_5,row_12,row_7,row_9,row_11,row_2,row_4,row_6,row_8,row_10]

   

   temp_H = cat(1,H_index(1,:),H_index(3,:),H_index(5,:),H_index(12,:),...

     H_index(7,:),H_index(9,:),H_index(11,:),H_index(2,:),...

     H_index(4,:),H_index(6,:),H_index(8,:),H_index(10,:));

   

   clear H_index;

   

   H_index = temp_H;

   

 case 2/3

   hc1 =  [floor(2*n/k);-1;floor(10*n/k);-1;floor(23*n/k);-1;floor(32*n/k);-1];

   hc2 =  [-1;floor(69*n/k);-1;floor(28*n/k);-1;floor(30*n/k);-1;0];

   hc3 =  [floor(19*n/k);-1;floor(86*n/k);-1;floor(29*n/k);-1;0;-1];

   hc4 =  [-1;floor(88*n/k);-1;floor(32*n/k);-1;floor(65*n/k);-1;floor(47*n/k)];

   hc5 =  [floor(47*n/k);-1;floor(62*n/k);-1;floor(15*n/k);-1;floor(15*n/k);-1];

   hc6 =  [-1;floor(47*n/k);-1;floor(81*n/k);-1;floor(54*n/k);-1;floor(13*n/k)];

   hc7 =  [floor(48*n/k);-1;floor(28*n/k);-1;floor(30*n/k);-1;floor(56*n/k);-1];

   hc8 =  [-1;floor(3*n/k);-1;floor(27*n/k);-1;floor(14*n/k);-1;floor(61*n/k)];

   hc9 =  [floor(36*n/k);-1;floor(85*n/k);-1;floor(66*n/k);-1;floor(85*n/k);-1];

   hc10 = [-1;floor(16*n/k);-1;floor(88*n/k);-1;0;-1;floor(84*n/k)];

   hc11 = [floor(82*n/k);-1;floor(16*n/k);-1;floor(24*n/k);-1;floor(5*n/k);-1];

   hc12 = [-1;floor(37*n/k);-1;floor(5*n/k);-1;floor(30*n/k);-1;floor(55*n/k)];

   hc13 = [floor(47*n/k);-1;floor(34*n/k);-1;floor(50*n/k);-1;floor(6*n/k);-1];

   hc14 = [-1;floor(40*n/k);-1;floor(56*n/k);-1;floor(74*n/k);-1;floor(78*n/k)];

   hc15 = [floor(15*n/k);-1;floor(73*n/k);-1;floor(62*n/k);-1;floor(52*n/k);-1];

   hc16 = [-1;floor(48*n/k);-1;floor(37*n/k);-1;0;-1;floor(41*n/k)];

   hc17 = [floor(95*n/k);-1;-1;-1;-1;-1;0;floor(95*n/k)];

   hc18 = [0;0;-1;-1;-1;-1;-1;-1;];

   hc19 = [-1;0;0;-1;-1;-1;-1;-1;];

   hc20 = [-1;-1;0;0;-1;-1;-1;-1;];

   hc21 = [-1;-1;-1;0;0;-1;-1;-1;];

   hc22 = [-1;-1;-1;-1;0;0;-1;-1;];

   hc23 = [-1;-1;-1;-1;-1;0;0;-1;];

   hc24 = [-1;-1;-1;-1;-1;-1;0;0;];

   

   H_index = cat(2,hc1,hc2,hc3,hc4,hc5,hc6,hc7,hc8,hc9,hc10,hc11,hc12,...

     hc13,hc14,hc15,hc16,hc17,hc18,hc19,hc20,hc21,hc22,hc23,hc24);

   

   % temp_H = [row_1,row_4,row_7,row_2,row_5,row_8,row_3,row_6]

   

   temp_H = cat(1,H_index(1,:),H_index(4,:),H_index(7,:),H_index(2,:),...

     H_index(5,:),H_index(8,:),H_index(3,:),H_index(6,:));

   

   clear H_index;

   

   H_index = temp_H;

   

 case 3/4

   hc1 =  [floor(6*n/k);floor(62*n/k);floor(71*n/k);floor(38*n/k);-1;-1];

   hc2 =  [floor(38*n/k);floor(94*n/k);-1;floor(61*n/k);-1;floor(63*n/k)];

   hc3 =  [floor(3*n/k);floor(19*n/k);floor(55*n/k);-1;-1;floor(31*n/k)];

   hc4 =  [floor(93*n/k);floor(84*n/k);-1;floor(66*n/k);-1;floor(88*n/k)];

   hc5 =  [-1;-1;floor(12*n/k);floor(9*n/k);floor(32*n/k);floor(20*n/k)];

   hc6 =  [-1;floor(92*n/k);floor(66*n/k);floor(73*n/k);floor(52*n/k);-1];

   hc7 =  [-1;floor(78*n/k);floor(45*n/k);floor(47*n/k);floor(55*n/k);-1];

   hc8 =  [floor(30*n/k);-1;floor(79*n/k);floor(64*n/k);floor(80*n/k);-1];

   hc9 =  [floor(70*n/k);floor(15*n/k);-1;-1;floor(95*n/k);floor(6*n/k)];

   hc10 = [-1;-1;floor(78*n/k);floor(39*n/k);floor(22*n/k);floor(40*n/k)];

   hc11 = [floor(86*n/k);-1;-1;floor(61*n/k);floor(6*n/k);floor(56*n/k)];

   hc12 = [-1;floor(92*n/k);-1;floor(43*n/k);floor(51*n/k);floor(16*n/k)];

   hc13 = [floor(37*n/k);-1;floor(10*n/k);-1;floor(24*n/k);floor(71*n/k)];

   hc14 = [floor(38*n/k);floor(45*n/k);-1;-1;floor(90*n/k);floor(53*n/k)];

   hc15 = [floor(4*n/k);floor(24*n/k);floor(22*n/k);-1;floor(44*n/k);-1];

   hc16 = [floor(11*n/k);floor(32*n/k);floor(55*n/k);-1;floor(20*n/k);-1];

   hc17 = [-1;floor(30*n/k);floor(70*n/k);floor(95*n/k);-1;floor(27*n/k)];

   hc18 = [floor(46*n/k);-1;floor(82*n/k);floor(32*n/k);-1;floor(26*n/k)];

   hc19 = [floor(48*n/k);-1;-1;0;-1;floor(48*n/k)];

   hc20 = [0;0;-1;-1;-1;-1];

   hc21 = [-1;0;0;-1;-1;-1];

   hc22 = [-1;-1;0;0;-1;-1];

   hc23 = [-1;-1;-1;0;0;-1];

   hc24 = [-1;-1;-1;-1;0;0];

   

   H_index = cat(2,hc1,hc2,hc3,hc4,hc5,hc6,hc7,hc8,hc9,hc10,hc11,hc12,...

     hc13,hc14,hc15,hc16,hc17,hc18,hc19,hc20,hc21,hc22,hc23,hc24);

   

 otherwise

   error('ldpc_matrix_80216e error: code rate is not supported');

end

 

⛄ 运行结果

⛄ 参考文献

[1] 向波, 鲍丹, 黄双渠,等. 基于TDMP的超高速低功耗QC-LDPC码解码器:.

[2] 杨文斌. T-MMB标准中准循环LDPC码解码器的仿真与实现[D]. 天津大学.

[3] 向波, 鲍丹, 黄双渠,等. 一种基于TDMP的高速可配置QC-LDPC码解码器:, CN101800559A[P]. 2010.

[4] 鲍丹, 向波, 申睿,等. 基于TDMP优化算法的QC-LDPC译码器VLSI实现[J]. 计算机研究与发展, 2009(2):7.

⛳️ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
3月前
|
数据可视化
基于MATLAB的OFDM调制发射与接收仿真
基于MATLAB的OFDM调制发射与接收仿真
|
2月前
|
5G
基于IEEE 802.11a标准的物理层MATLAB仿真
基于IEEE 802.11a标准的物理层MATLAB仿真
214 0
|
2月前
|
算法
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
2月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
3月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
263 2
|
3月前
|
监控
基于MATLAB/Simulink的单机带负荷仿真系统搭建
使用MATLAB/Simulink平台搭建一个单机带负荷的电力系统仿真模型。该系统包括同步发电机、励磁系统、调速系统、变压器、输电线路以及不同类型的负荷模型。
518 5
|
3月前
|
机器学习/深度学习 边缘计算 算法
【无人机】无人机群在三维环境中的碰撞和静态避障仿真(Matlab代码实现)
【无人机】无人机群在三维环境中的碰撞和静态避障仿真(Matlab代码实现)
213 0
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
314 0
|
2月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
146 0

热门文章

最新文章