matlab - 如何迭代matlab中稀疏矩阵中的元素?

我正在为 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

当然你可以将iijj重命名为row_indexcolumn_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

python - 使用 python 请求在 HTTP POST 上规避错误 414

regex - R 中 SQL LIKE 运算符的等价物