1.稀疏矩陣索引矩陣
clc;clear;
H = [1 1 1 1 0 1
0 1 1 0 1 0
1 0 1 1 0 1
1 1 0 1 1 1]
C = [1 2 3 4 5 6];
[m,n] = size(H);
for i = 1:m
k = 1;
for j = 1:n
if H(i,j)~=0
index_col(i,k) = j;
k = k + 1;
end
end
end
index_col %indexl_col(i,k)
[m,n_n] = size(index_col);
for j = 1:n
k = 1;
for i = 1:m
if H(i,j)~=0
index_row(k,j) = i;
k = k + 1;
end
end
end
index_row; %index_row(k,j);
[m_m,n] = size(index_row);
2.根據稀疏矩陣索引確定矩陣值
1)BP譯碼算法中校驗節點對應變量節點乘機
每個校驗節點所對應的變量節點除本節點外其餘變量節點的乘機所組成的矩陣
for i = 1:m
nn = length(find(index_col(i,:)~=0));%%確定每非零長度
for j = 1:nn
prod = 1;
for k = 1:nn
if j~=k
prod = prod*C(index_col(i,k));
end
end
prod_1(j) = prod;
end
prod_2(i,1:nn) = prod_1(1:nn);
end
prod_2
%************還原開始****************
for i = 1:m
nn = length(find(index_col(i,:)~=0));%%確定每非零長度
for j = 1:nn
HH(i,index_col(i,j)) = prod_2(i,j);
end
end
HH
%************還原結束****************