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

📄 mk_fgraph.m

📁 麻省理工学院的人工智能工具箱,很珍贵,希望对大家有用!
💻 M
字号:
function fg = mk_fgraph(G, node_sizes, factors, varargin)% MK_FGRAPH Make a factor graph% fg = mk_fgraph(G, node_sizes, factors, ...)%% A factor graph is a bipartite graph, with one side containing variables,% and the other containing functions of (subsets of) these variables.% For details, see "Factor Graphs and the Sum-Product Algorithm",%  F. Kschischang and B. Frey and H-A. Loeliger,%  IEEE Trans. Info. Theory, 2001%% G(i,j) = 1 if there is an arc from variable i to factor j%% node_sizes(i) is the number of values node i can take on,%   or the length of node i if i is a continuous-valued vector.%% 'factors' is the list of factors (kernel functions)%% The list below gives optional arguments [default value in brackets].% % equiv_class - equiv_class(i)=j  means factor node i gets its params from factors{j} [1:F]% discrete - the list of nodes which are discrete random variables [1:N]%% e.g., fg = mk_fgraph(G, [2 2], {bnet.CPD{1},bnet.CPD{2}}, 'discrete', [1 2])fg.G = G;fg.node_sizes = node_sizes;fg.factors = factors;[fg.nvars fg.nfactors] = size(G);% default values for parametersfg.equiv_class = 1:fg.nfactors;fg.dnodes = 1:fg.nvars;if nargin >= 4  args = varargin;  nargs = length(args);  for i=1:2:nargs    switch args{i},     case 'equiv_class', fg.equiv_class = args{i+1};      case 'discrete',    fg.dnodes = args{i+1};      otherwise,        error(['invalid argument name ' args{i}]);           end  endend% so that determine_pot_type will work...fg.utility_nodes = [];%fg.decision_nodes = [];%fg.chance_nodes = fg.nvars;fg.dom = cell(1, fg.nfactors);for f=1:fg.nfactors  fg.dom{f} = find(G(:,f));endfg.dep = cell(1, fg.nvars);for x=1:fg.nvars  fg.dep{x} = find(G(x,:));endfg.cnodes = mysetdiff(1:fg.nvars, fg.dnodes);

⌨️ 快捷键说明

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