matlab中此段代码错误提示为: yaxiangsutiqu索引中的冒号运算符的非有限端点或增量。出错 subpixel_edge 第 31 行 edgeStrengthy x = bilinear_interpolationsubpixelX subpixelY edgeImgy1y2 x1x2;出错 yaxiangsutiqu 第
在代码中,错误提示是关于索引的冒号运算符的问题。具体来说,错误发生在以下这行代码:
edgeStrength(y, x) = bilinear_interpolation(subpixelX, subpixelY, edgeImg(y1:y2, x1:x2));
问题出在索引 edgeImg(y1:y2, x1:x2) 上。根据错误提示,冒号运算符的端点或增量不是有限的。这是因为在计算 subpixelX 和 subpixelY 时,使用了 floor 函数来取整。然后在计算 x1、x2、y1 和 y2 时,又使用了 floor 函数。这导致了 x1、x2、y1 和 y2 的值可能是非整数的,从而导致了索引的错误。
要解决这个问题,你可以尝试使用 round 函数来取整,而不是 floor 函数。修改以下这些行代码:
subpixelX = floor(x - dx / (2*dx - dx));
subpixelY = floor(y - dy / (2*dy - dy));
为:
subpixelX = round(x - dx / (2*dx - dx));
subpixelY = round(y - dy / (2*dy - dy));
这样,x1、x2、y1 和 y2 的值就会是整数,从而避免了索引错误。
原文地址: https://www.cveoy.top/t/topic/hCIf 著作权归作者所有。请勿转载和采集!