以下脚本给出了错误"下标索引必须是正整数或逻辑。"
我不明白为什么,因为变量是整数。而且,我也将它们转换为整数。
代码是:
x_start = int16(x-matrixRay);
x_end = uint16(x+matrixRay);
y_start = uint16(y-matrixRay);
y_end = uint16(y+matrixRay);
matrix = img(x_start:x_end,y_start:y_end);
我在上面的代码之前放了一个断点。下面我列出了变量的值:
K>> x_start
x_start =
uint16
298
K>> x_end
x_end =
uint16
302
K>> y_start
y_start =
uint16
88
K>> y_end
y_end =
uint16
92
K>> matrixRay
matrixRay =
2
显然,我不能发布所有矩阵" img",因为它非常大。工作区是1369x1173 uint8。
答案 0 :(得分:2)
正如其他人所指出的那样,int8(-128到127)显然不会覆盖你的图像尺寸。给定大小,您可以使用uint16作为索引。使用有符号整数进行索引没有多大意义。您可以简单地使用round来创建索引,以防它可能是非整数。
但是int8只会给你错误的结果(比我认为的错误更糟)。您得到的错误是因为您的x_start或y_start为零。您可以通过设置断点轻松检查这一点。
如果你确定自己在做什么就是你想要的,你可以解决这个问题:
for( my $i=0; $i<@rec; $i++) {
my $x = $rec[$i] // '';
if( $i == 1 && ($rec[7]//"") eq 'a' ) {
$html .= "<td><font size=\"3\" color=\"#FF0000\">$x</font></td>";
}else{
$html .= "<td>$x</td>";
}
}
类似的应该应用于y_start和y_end。