2008-11-22 13 views
7

tengo estos 2 vectores:tipos numéricos de error al multiplicar dos 2 vectores en MATLAB

alpha = 
    1 1 1 1 1 1 1 1 1 

f_uv = 
    193 193 194 192 193 193 190 189 191 

Y cuando hago esto:

alphaf_uv = alpha * f_uv' 

consigo el mensaje de error:

"??? Error using ==> mtimes 
Integers can only be combined with integers of the same class, or scalar doubles." 

Lo interesante es que este error no aparece si defino los mismos vectores en la consola y pruebo la multiplicación allí.

alpha lo defino y f_uv se obtiene de algunos píxeles en una imagen PNG.

Respuesta

16

Suponiendo que ambas sean matrices de números enteros para empezar, f_uv' puede no ser así.

Probar:

alphaf_uv = double(alpha) * double(f_uv') 

y háganos saber si se sigue produciendo.

Es posible que deba volver a alphaf_uv en un tipo entero después, según sus necesidades.

+1

Pregunta rápida al usar doble ¿afectará esto a la precisión? ¿Voy a ir de decir 0.159 a doble (0.159) = 0.16? – user481610

0

Quizás f_uv es un objeto con "valor de consola" devuelto por un método .toString(). En este caso, puede que necesite marcar f_uv como (int).

5

La gran idea aquí es la siguiente:

alfa se define por mí y f_uv se obtiene de algunos píxeles en una imagen PNG.

Esto en gran medida implica que los datos f_uv está entrando como uint8. El comando WHOS verificará. Cuando defines esto en la línea de comando, los vectores serán Dobles por defecto. Es por eso que estás viendo la diferencia en el comportamiento entre matrices "idénticas".

+0

Gracias por la sugerencia del comando 'whos'. – beardc

Cuestiones relacionadas