我正在为matlab中的LDPC信念传播解码器编写代码.我遵循以下规定的算法:http: //www.ece.umd.edu/~tta/resources/LDPC.pdf第6页.
我想对这个目标使用稀疏矩阵.在此期间我想迭代只有很少的矩阵.我的问题是我如何只迭代矩阵中的那些?
我将更具体一点:假设我有以下matlab代码:
for row_index = 1 : row_num
for coloum_index = 1 : col_num
if parity_check_matrix(row_index, coloum_index)
messages_llr_matrix(row_index, coloum_index) = ...
code_word_aprior_prob(coloum_index);
end
end
Run Code Online (Sandbox Code Playgroud)
此代码采用向量'code_word_aprior_prob'并将其值分配给矩阵'messages_llr_matrix'中不为零的行.现在,我想使用稀疏矩阵执行此操作.
parity_check_matrix是一个稀疏矩阵.
假设你有一个稀疏矩阵S.您可以使用迭代遍历其非零元素
[ii,jj,ss] = find(S);
for k=length(ii)
%// A nonzero element of S: ss(k) = S(ii(k),jj(k))
end
Run Code Online (Sandbox Code Playgroud)
虽然我不确定这会有多快.
在你的具体情况下,你可能会这样做
[ii,jj] = find(parity_check_matrix);
for k = 1 : length(ii)
messages_llr_matrix(ii(k), jj(k)) = ...
code_word_aprior_prob(jj(k));
end
Run Code Online (Sandbox Code Playgroud)
当然,你可以重命名ii,并jj要row_index和column_indexRESP.
| 归档时间: |
|
| 查看次数: |
1802 次 |
| 最近记录: |