2013-12-18 12 views
-2

对,我对矢量化的概念非常陌生,但我试图让它头晕。目前,我正在努力去适应一些,我写来实现Canny边缘检测为矢量形式,什么我不明白的代码就是这样:向量化版本的matlab代码产生了与标准循环不同的结果

for r=1:fsize 
    for c=1:fsize 
     mask(r,c) = mask(r,c)/Z; 
    end 
end 

产生不同的结果是:

mask(r:fsize,c:fsize) = mask(r:fsize,c:fsize)/Z; 

当我的理解是他们应该做同样的事情?

+0

这是第二种情况下的一个简单的错字。 –

+0

@MattPhillips哪里? –

+0

'c'和'r'应该是'1'。 –

回答

1
for r=1:fsize 
    for c=1:fsize 
     mask(r,c) = mask(r,c)/Z; 
    end 
end 

是相当于

mask(1:fsize, 1:fsize) = mask(1:fsize, 1:fsize)/Z; 

注 - 1:fsizec:fsize

这是假设Z是一个常数。做* (1/Z)的速度会稍微快一点,然后相乘......

3

什么是r,什么是c在第二种解决方案?也许你需要逐元素师./

mask = mask./Z; 

如果这没有解决您的问题,请提供输入数据重现。

+0

r和c是矩阵的索引,它应该从1开始。显然我忘了定义它们(我不能在内联中).... –