2013-07-17 161 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),而不是反駁它。 –