📄 sumproduct_example.m
字号:
% =================================================================% sumproduct_example.m% (C) Tadashi Wadayama, 2002% =================================================================function sumproduct_example()% -----------------------------------% 晞崋僷儔儊乕僞丄専嵏峴楍偺撉傒崬傒% -----------------------------------filename = '6.3.spmat'; % 専嵏峴楍僼傽僀儖(spmat宍幃)fp = fopen(filename,'r');n = fscanf(fp,'%d',1); % 晞崋挿m = fscanf(fp,'%d',1); % 専嵏婰崋悢kmax = fscanf(fp,'%d',1); % 峴廳傒偺嵟戝抣jmax = fscanf(fp,'%d',1); % 楍廳傒偺嵟戝抣for j = 1:m row_weight(j) = fscanf(fp,'%d',1); % 奺峴偺峴廳傒end;for j = 1:n column_weight(j) = fscanf(fp,'%d',1);% 奺楍偺楍廳傒end;counter = zeros(1,n);row_list = zeros(m,kmax);for i = 1:m for j = 1:row_weight(i); a = fscanf(fp,'%d',1); row_list(i,j) = a; counter(a) = counter(a) + 1; column_list(a,counter(a)) = i; endend;fprintf('n = %d, m = %d\n',n,m);fprintf('kmax = %d, jmax = %d\n',kmax,jmax);fprintf('row_list\n');disp(row_list);fprintf('column_list\n');disp(column_list);% -----------------------------------% 暘嶶偺弶婜愝掕偲懳悢栟搙斾偺寁嶼% -----------------------------------%捠怣楬偼AWGN捠怣楬傪壖掕rword = [1.620803,0.264281,-0.031637,-0.127654,0.746347,1.003543]; % 庴怣岅var = 0.794328; % 暘嶶lambda = 2.0/var * rword; % 懳悢栟搙斾% -----------------------------------% 懳悢椞堟sum-product暅崋朄% -----------------------------------alpha = zeros(m,n);beta = zeros(m,n);loop_max = 5; % 嵟戝斀暅夞悢for loop_counter = 1: loop_max;% 峴張棟 for i = 1:m for j = 1:row_weight(i); sum = 0.0; prod = 1.0; for k = 1:row_weight(i); if k ~= j tmp = lambda(row_list(i,k)) + beta(i,row_list(i,k)); sum = sum + gallager_f(abs(tmp)); prod = prod * sign(tmp); end; end; alpha(i,row_list(i,j)) = prod * gallager_f(sum); end; end;% 楍張棟 for i = 1:n sum2 = 0.0; for j = 1:column_weight(i); sum = 0.0; for k = 1:column_weight(i); if k ~= j sum = sum + alpha(column_list(i,k),i); end; end; beta(column_list(i,j),i) = sum; sum2 = sum2 + alpha(column_list(i,j),i); end; posterior(i) = lambda(i) + sum2; end; fprintf('----------------------------- 儖乕僾 = %d\n',loop_counter); fprintf('奺價僢僩偺懳悢帠屻妋棪斾:\n'); disp(posterior);end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -