簡體   English   中英

為什么MATLAB顯示“索引超出矩陣尺寸”。錯誤

[英]Why MATLAB is showing “Index exceeds matrix dimensions.” Error

我是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

當您使用超出范圍的某些值時,發生“索引超出矩陣尺寸”。 例如,如果我有N = [1,2,3],那么如果我嘗試調用N(4),那么我將得到“索引超出矩陣維數”。 記住,matlab中的矩陣從索引1開始,而不是0。

在使用矩陣進行處理之前,請確保檢查矩陣的大小

size(yourmatrix)

一目了然,您的錯誤應該出在root(rr)nodes(root(rr).values)

root(rr)值大於nodes中元素的數量。

這意味着您指定的索引值大於矩陣分配的尺寸限制。 例如,“ for語句進行了10次循環,並且您將最大矩陣維數為300時分配了索引值301,這將給您帶來錯誤“索引超出矩陣維數”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM