2013-05-30 63 views
-2

假設我有一個矩陣[1 2 3 5;1 3 4 5]
每一行代表一條路徑,每一列代表該路徑的節點。
例如:1行:1-2-3-5與節點1235(其中1是起始節點和5是端節點)的路徑。
我想要考慮這條弧後面的弧和弧。
例如:我想考慮(1,2)(2-3)併爲其分配成本。我的循環矩陣不起作用

我寫了一段代碼,但是顯示錯誤。

for kkp = 1:size(R{ip},1) % R{ip} is my path matrix 
    for jjp = 1:size(R{ip},2)-1 
     for iip = 1:size (R{ip,2} -2) 
      up = R{ip}(kkp,jjp); 
      vp = R{ip}(kkp,jjp+1); 
      wp = R{ip}(kkp,jjp+2); 
      cost1 = wt(up,vp); %wt(i,j) is a cost matrix that i already inputed. 
      cost 2 = wt(vp,wp); 
     end 
    end 
end 
+2

什麼是錯誤信息? – Schorsch

+0

你不需要三個嵌套循環!循環遍歷從1到numel(R),內循環(kkp)從1到numel(R {ip}) - 2的外部索引(路徑數'ip'),然後設置iip = kkp + 1,jjp = kkp + 2,並像你一樣計算路徑成本。並修復'成本2 = ...'的空間 – Floris

回答

3

在你的問題的代碼3行是一個錯字或您的問題:

for iip = 1:size (R{ip,2} -2) 

應該

for iip = 1:size(R{ip},2) -2 

此外,你永遠不會使用iip。所以也許行6在你的例子應該是:

wp = R{ip}(kkp,iip+2); 
+0

我已經進行了修正,但仍顯示錯誤。我的成本2比例是零,但這是不對的。 我的wt矩陣是: wt = [0 2 4 0; 1 0 5 3; 4 5 0 5; 0 3 5 0]; 所以如果對於路徑1-2-3-4,cost1應該是2,cost2應該是5(2-3)和5(3-4)。 – abc

+0

你可以把你的問題變成一個[簡短,自包含,正確,例如](http://sscce.org/)?這些調試問題往往會很快失去控制,因爲你沒有顯示完整的代碼,所以它仍然完全不清楚真正發生的事情。例如,在這裏,我們可以猜測'up','yp','wp'的值,我們不知道單元格'R' - 所有這些都可能是有趣的。 – Schorsch

+0

@abc:看到我上面的評論,但也:你得到一個實際的matlab錯誤信息 - 或只是不是你期待的結果? – Schorsch