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

该文章是关于使用MATLAB进行科研开发的内容,特别是针对IEEE802.16eWiMAX标准的LDPC(低密度奇偶校验)码的生成。作者提供了创建不同编码率(1/2,2/3,3/4)的奇偶校验矩阵的函数,并展示了部分代码示例,涉及不同的子矩阵尺寸。代码主要用于创建用于错误纠正的编码矩阵,适用于无线通信中的数据传输错误保护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

✅作者简介:热爱科研的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电子书和数学建模资料

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值