2013-03-20 146 views
0


我使用Matlab的scene change detection example在Mathwork網站上給出。該代碼運行正常,直到其中正顯示出以下錯誤的最後一站:
「矩陣尺寸必須一致」錯誤在Matlab文檔中的場景變化檢測示例

Error using -
Matrix dimensions must agree. Error in scenechange (line 65)
edge_diff = abs(mean_blks - mean_blks_prev);

錯誤的線路是:

edge_diff = abs(mean_blks - mean_blks_prev); 

我查了一下尺寸。它們是:15 170 1
任何人都試過這個例子,並得到這個錯誤?我如何解決這個錯誤?

+0

所以你嘗試從15X1向量減去一個70x1載體。這是不可能的,因爲矢量不具有相同的大小。確保他們是相同的大小。 – Nick 2013-03-20 06:57:30

+0

您可以使用 減去第二個向量的前15個元素edge_diff = abs(mean_blks - mean_blks_prev(1:15)) – Nick 2013-03-20 07:01:40

+0

我不能添加零來使它們具有相同變暗的矢量,然後減去? – MaxSteel 2013-03-20 07:11:22

回答

1

試試這個:

len_mean_blks  = length(mean_blks); 
len_mean_blks_prev = length(mean_blks_prev); 

if len_mean_blks < len_mean_blks_prev 
    padded_mean_blks     = nan(len_mean_blks_prev, 1); 
    padded_mean_blks(1:len_mean_blks) = mean_blks; 
    edge_diff = abs(padded_mean_blks - mean_blks_prev); 
elseif len_mean_blks > len_mean_blks_prev 
    padded_mean_blks_prev      = nan(len_mean_blks, 1); 
    padded_mean_blks_prev(1:len_mean_blks_prev) = mean_blks_prev; 
    edge_diff = abs(mean_blks - padded_mean_blks_prev); 
end 
+0

對不起,我的錯誤,一個錯字:使用nan(不帶's') – Nick 2013-03-20 07:40:50

+0

這意味着您要在向量中分配的元素數量與源中元素的數量不匹配。簡而言之,mean_blks_prev確實具有比len_mean_blks_prev的值更多的元素。 – Nick 2013-03-20 07:51:56