Pasé parte de ayer y hoy rastreando un error en algún código de Matlab. Creí que mi problema era la indexación (con muchas estructuras que no definí y todavía me estoy acostumbrando), pero resultó ser un error de desbordamiento. Extrañaba esto por una razón muy específica:Cómo reconocer los errores de desbordamiento en Matlab?
>> uint8(2) - uint8(1)
ans =
1
>> uint8(2) - uint8(2)
ans =
0
>> uint8(2) - uint8(3)
ans =
0
lo que habría esperado el último en ser algo así como -1
(o 255
). En el medio de un gran vector, los erróneos 0
s eran difíciles de detectar, pero un 255
se habría destacado fácilmente.
¿Algún consejo sobre cómo detectar estos problemas fácilmente en el futuro? (Idealmente, me gustaría desactivar la verificación de desbordamiento para que funcione como C.) Cambiar a double
funciona, por supuesto, pero si no me doy cuenta de que es un uint8
para empezar, eso no ayuda.
¿De dónde sacas estos números a partir de? Si los carga desde un archivo, simplemente puede agregar una línea al cargador para devolverlos todos como uint8 o como dobles. Aparte de leer archivos, no debe esperar uint8 en Matlab. – Jonas
En realidad, no sé exactamente de dónde vienen. Me estoy integrando con el código de otra persona, por lo que no sé los detalles. –