2013-07-17 126 views
-1

我无法计算eye(100)s = imread('1','gif')的乘积。矩阵的尺寸是相等的,但MATLAB注意到以下错误:元素明细后矩阵乘法

Error using .*
Integers can only be combined with integers of the same class, or scalar doubles.

如何可以定义s与在MATLAB浮点值的矩阵?

+0

为什么你会用眼睛反正繁殖。它会返回相同的东西? – MZimmerman6

+2

它只会保持对角线,其他的都是黑色的。 –

回答

3

MATLAB的imread返回一个元素类型为uint8(无符号8位整数)的矩阵。与产生double类型的矩阵的eye(100)相反。由于操作.*针对不同类型的操作数没有定义,你需要操纵它之前s转换为double

s = double(imread('1', 'gif')); 
+0

Eitan,这可能不像许多其他答案那样清晰。 imread'返回uint8's并不是真的,它的图像是'uint8'。 '。*'没有为'uint8'定义,这是因为你不能将它应用于两个不同类的参数。也许有点编辑? –

+0

@SamRoberts [文档](http://www.mathworks.com/help/matlab/ref/imread.html#f25-722074)表示,'imread'用于将输入图像GIF返回'uint8'(除非它是1位图像)。我不确定'。*'的部分,但我会接受你的说法。 –

+0

呃,什么?当你说“imread用于输入GIF图像返回UINT8(除非它是一个1位图像)”,你跟我一致认为“这不完全正确imread返回uint8s,它的图像是UINT8”?你的句子似乎暗示我的(gif),而不是反驳它。 –