2013-03-20 147 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