我正在为 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
此代码采用向量“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
虽然我不确定这会有多快。
在您的特定情况下,您可能会这样做
[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
当然你可以将ii
和jj
重命名为row_index
和column_index
。
https://stackoverflow.com/questions/32903572/
相关文章:
c# - 如何等待 UploadStringAsync 方法完成
drupal - 在新的 Drupal 8 站点上,子菜单链接没有出现?
python - 值错误 : continuous is not supported
php - MDL- componentHandler.upgradeDom();在ajax调用之后
bash - 将 Bash Shell 变量传递给 Awk NR 函数
ruby-on-rails - 如何显示 Time.now 基于 TimeZone - Rails
vim - 如何在 Vim 中快速上下(ctrl u 和 ctrl d)重新映射到 ctrl j 和
linux-kernel - BUILDROOT ip : can't find device et