⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 marginal_nodes.m

📁 贝叶斯算法(matlab编写) 安装,添加目录 /home/ai2/murphyk/matlab/FullBNT
💻 M
字号:
function marginal = marginal_nodes(engine, nodes)% MARGINAL_NODES Compute the marginal on the specified query nodes (likelihood_weighting)% marginal = marginal_nodes(engine, nodes)bnet = bnet_from_engine(engine);ddom = myintersect(nodes, bnet.dnodes);cdom = myintersect(nodes, bnet.cnodes);nsamples = size(engine.samples, 1);ns = bnet.node_sizes;%w = normalise(engine.weights);w = engine.weights;if mysubset(nodes, ddom)  T = 0*myones(ns(nodes));  P = prod(ns(nodes));  indices = ind2subv(ns(nodes), 1:P);  samples = reshape(cat(1, engine.samples{:,nodes}), nsamples, length(nodes));  for j = 1:P    rows = find_rows(samples, indices(j,:));    T(j) = sum(w(rows));  end  T = normalise(T);  marginal.T = T;elseif subset(nodes, cdom)  samples = reshape(cat(1, engine.samples{:,nodes}), nsamples*sum(ns(nodes)), length(nodes));  [marginal.mu, marginal.Sigma] =  wstats(samples', normalise(w));else  error('can''t handle mixed marginals yet');endmarginal.domain = nodes;%%%%%%%%%function rows = find_rows(M, v)% FINDROWS Find rows which are equal to a specified vector% rows = findrows(M, v)% Each row of M is a sampletemp = abs(M - repmat(v, size(M, 1), 1));rows = find(sum(temp,2) == 0);      %%%%%%%%function [mu, Sigma] = wstats(X, w)% Computes the weighted mean and weighted covariance matrix for a given% set of observations X(:,i), and a set of normalised weights w(i).% Each column of X is a sample.d = X - repmat(X * w', 1, size(X, 2));mu = sum(X .* repmat(w, size(X, 1), 1), 2);Sigma = d * diag(w) * d';          

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -