【发布时间】:2017-12-17 13:41:46
【问题描述】:
我是 MATLAB 新手,正在尝试学习贝叶斯网络。 运行这段代码会报错
索引超出矩阵维度。
排队
( for r = 1:length(nodes(root(rr)).values))
请帮帮我。
提前致谢
function [nodes, edges] = bnMsgPassInitiate(nodes, edges, root)
N = numel(nodes);
for X = 1:N % for every node
nodes(X).lambda = ones(1, length(nodes(X).values)); % l(x) = 1
Z = nodes(X).parents;
for pa = 1:length(Z) % for each parent of X
edges(Z(pa),X).lambdaX = ones(1, length(nodes(Z(pa)).values)); % lX(z) = 1
end
Y = nodes(X).children;
for ch = 1:length(Y) % for each child of X
edges(X,Y(ch)).peyeX = ones(1, length(nodes(X).values)); % peyeY(x)
end
end
numRoots = length(root);
for rr = 1:numRoots
**for r = 1:length(nodes(root(rr)).values)**
nodes(root(rr)).peye(r) = nodes(root(rr)).CPT(r);
nodes(root(rr)).P(r) = nodes(root(rr)).CPT(r);
end
childrenR = nodes(root(rr)).children;
for cr = 1:length(childrenR)
[nodes, edges] = bnMsgPassSendPiMsg(root(rr), childrenR(cr), nodes, edges, []); %A = []
end
end
【问题讨论】:
-
错误的哪一部分你不明白,“索引”或“矩阵维度”?我们不可能提供帮助,因为我们没有您的意见。 uk.mathworks.com/help/matlab/debugging-code.html
-
nodes= 0x1 struct root =1 values= 1x4 cell CPT= 1x4 cell 这些是我的输入。
标签: matlab indexing bayesian-networks