2008-11-22 8 views
7

Je ces 2 vecteurs:types numériques d'erreur lors de la multiplication de deux 2 vecteurs dans Matlab

alpha = 
    1 1 1 1 1 1 1 1 1 

f_uv = 
    193 193 194 192 193 193 190 189 191 

Et quand je fais ceci:

alphaf_uv = alpha * f_uv' 

Je reçois le message d'erreur:

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

La partie intéressante est que cette erreur n'apparaît pas si je définis les mêmes vecteurs dans la console et j'essaie la multiplication là.

alpha est défini par moi et f_uv est obtenu à partir de certains pixels dans une image PNG.

Répondre

16

En supposant qu'ils soient tous les deux des matrices entières, f_uv' peut ne pas l'être.

Essayez:

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

et laissez-nous savoir si elle se produit encore.

Vous devrez peut-être rétablir alphaf_uv dans un type entier par la suite, en fonction de vos besoins.

+1

Une question rapide en utilisant le double affectera-t-elle la précision? c'est-à-dire que je vais passer de 0,159 à doubler (0,159) = 0,16? – user481610

0

Peut-être que f_uv est un objet avec la valeur "console" renvoyée par une méthode .toString(). Dans ce cas, vous devrez peut-être boxer f_uv as (int).

5

Le grand indice est ici ceci:

alpha est définie par moi et f_uv est obtenu à partir des pixels dans une image png.

Cela implique fortement que les données f_uv arrive en tant que uint8. La commande WHOS va vérifier. Lorsque vous définissez ceci sur la ligne de commande, les vecteurs seront Double par défaut. C'est pourquoi vous voyez la différence de comportement entre des matrices "identiques".

+0

Merci pour la commande "whos". – beardc

Questions connexes