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

yar*_*ron 1 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
Run Code Online (Sandbox Code Playgroud)

此代码采用向量'code_word_aprior_prob'并将其值分配给矩阵'messages_llr_matrix'中不为零的行.现在,我想使用稀疏矩阵执行此操作.

parity_check_matrix是一个稀疏矩阵.

Wau*_*uzl 7

假设你有一个稀疏矩阵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,并jjrow_indexcolumn_indexRESP.

  • @yaron参见[`spfun`](http://es.mathworks.com/help/matlab/ref/spfun.html) (2认同)