我无法计算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浮点值的矩阵?
我无法计算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浮点值的矩阵?
MATLAB的imread
返回一个元素类型为uint8
(无符号8位整数)的矩阵。与产生double
类型的矩阵的eye(100)
相反。由于操作.*
针对不同类型的操作数没有定义,你需要操纵它之前s
转换为double
:
s = double(imread('1', 'gif'));
Eitan,这可能不像许多其他答案那样清晰。 imread'返回uint8's并不是真的,它的图像是'uint8'。 '。*'没有为'uint8'定义,这是因为你不能将它应用于两个不同类的参数。也许有点编辑? –
@SamRoberts [文档](http://www.mathworks.com/help/matlab/ref/imread.html#f25-722074)表示,'imread'用于将输入图像GIF返回'uint8'(除非它是1位图像)。我不确定'。*'的部分,但我会接受你的说法。 –
呃,什么?当你说“imread用于输入GIF图像返回UINT8(除非它是一个1位图像)”,你跟我一致认为“这不完全正确imread返回uint8s,它的图像是UINT8”?你的句子似乎暗示我的(gif),而不是反驳它。 –
为什么你会用眼睛反正繁殖。它会返回相同的东西? – MZimmerman6
它只会保持对角线,其他的都是黑色的。 –