2013-07-17 3 views
-1

eye(100)s = imread('1','gif')의 곱을 계산할 수 없습니다. 행렬의 크기는 동일하지만, MATLAB 다음과 같은 오류 노트 : MATLAB에서 부동 소수점 값을 행렬로imread 후 요소 단위의 행렬 곱셈

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

어떻게 정의 할 수 있습니다 s을?

+0

은 왜 어쨌든 눈으로 곱 것입니다. 똑같은 것을 돌려 줄 것인가? – MZimmerman6

+2

대각선 만 유지하면 나머지는 모두 검은 색이됩니다. –

답변

3

MATLAB의 imreaduint8 (부호없는 8 비트 정수) 유형의 행렬을 반환합니다. eye(100)과 대조적으로 double 유형의 매트릭스가 생성됩니다. 동작 .*이 다른 유형의 피연산자에 대해 정의되지 않기 때문에, 당신은 그것을 조작하기 전에 doubles을 변환해야합니다

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

Eitan, 아마도 다른 대답들만큼이나 명확하지 않을 수 있습니다. 'imread'가'uint8'을 리턴한다는 것은 사실이 아닙니다. 이미지는'uint8'입니다. '. *'가'uint8'에 정의되어 있지 않다는 것은 사실이 아닙니다. 다른 클래스의 두 개의 인자에 적용 할 수 없다는 것입니다. 어쩌면 작은 편집일까요? –

+0

@SamRoberts [문서] (http://www.mathworks.com/help/matlab/ref/imread.html#f25-722074)에 따르면 입력 GIF 이미지의 'imread'는 'uint8'을 반환합니다 (1 비트 이미지). '. * '부분에 대해서는 잘 모르겠지만, 그 부분에 대해 말씀 드리겠습니다. –

+0

어, 뭐라구? "입력 된 GIF 이미지가 1 비트 이미지가 아닌 한 uint8을 반환합니다."라고 말하면 "imread가 uint8s를 반환한다는 것은 사실이 아니며 이미지가 uint8이라는 사실"이라고 나에게 동의합니까? 당신의 문장은 그것을 반박하는 것보다 내 것을 암시하는 것처럼 보입니다 (gif의 경우). –