Ошибка числовых типов при умножении двух двух векторов в MATLAB - PullRequest
7 голосов
/ 22 ноября 2008

У меня есть эти 2 вектора:

alpha =
     1    1    1    1    1    1    1    1    1

f_uv =
   193  193  194  192  193  193  190  189  191

И когда я делаю это:

alphaf_uv = alpha * f_uv'

Я получаю сообщение об ошибке:

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

Интересно то, что эта ошибка не появляется, если я определяю те же векторы в консоли и пытаюсь там умножить.

alpha определено мной, а f_uv получено из некоторых пикселей в PNG-изображении.

Ответы [ 3 ]

16 голосов
/ 22 ноября 2008

Если предположить, что они обе являются целочисленными матрицами, f_uv' может не быть.

Попробуйте:

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

и дайте нам знать, если это все еще происходит.

После этого вам может потребоваться преобразовать alphaf_uv в целочисленный тип, в зависимости от ваших потребностей.

5 голосов
/ 15 декабря 2008

Вот большая подсказка:

альфа определена мной, а f_uv получено из нескольких пикселей в png изображении.

Это в значительной степени означает, что данные f_uv поступают как uint8. Команда WHOS проверит. Когда вы определяете это в командной строке, векторы будут по умолчанию Double. Вот почему вы видите разницу в поведении между «одинаковыми» матрицами.

0 голосов
/ 22 ноября 2008

Возможно, f_uv - это объект с "консольным значением", возвращаемым методом .toString (). В этом случае вам может потребоваться указать f_uv как (int).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...