在MATLAB中将两个2向量相乘时,数字类型会出错

时间:2008-11-22 10:57:31

标签: matlab vector math

我有这两个载体:

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 个答案:

答案 0 :(得分:16)

假设它们都是开头的整数矩阵,f_uv'可能不是。

尝试:

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

并告诉我们它是否仍然存在。

根据您的需要,您可能需要在之后将alphaf_uv恢复为整数类型。

答案 1 :(得分:5)

这里的一个重要线索是:

  

alpha由我定义,f_uv是从png图像中的某些像素获得的。

这意味着 f_uv 数据以uint8的形式出现。 WHOS命令将验证。在命令行中定义它时,默认情况下向量将为Double。这就是为什么你看到“相同”矩阵之间行为的差异。

答案 2 :(得分:0)

也许f_uv是一个由.toString()方法返回的“控制台值”的对象。在这种情况下,您可能需要将f_uv设置为(int)。