Array indices must be positive integers or logical values (image processing)

조회 수: 7 (최근 30일)
x = imread('cameraman.jpg');
[M,N]=size(x)
for i=1:M
for j=1:N
I=x(i,j);
x(i,j)=xL(I)+( L(I)*lambda(i,j) );
end
end
where
xL is 1x256 dimension, xL is 1x256 dimension, and lambda is 256x256 dimension which is same with x that has 256x256 dimension.
I get this error:
Array indices must be positive integers or logical values.
Error in edge_enhancing (line 134)
x(i,j)=xL(I)+( L(I)*lambda(i,j) );
Ple

채택된 답변

KSSV
KSSV 2019년 3월 22일
I=x(i,j); % here I will be pixel value of image, it cannot be a index
x(i,j)=xL(I)+( L(I)*lambda(i,j) );
Note that in MATLAB indices should be positive integers or logicals.
A = rand(10) ;
A(1) % no error
A(10) % no error
A(5,4) % no error
A(-1) % error
A(0) % error
A(23.5) % error
  댓글 수: 3
KSSV
KSSV 2019년 3월 22일
편집: KSSV 2019년 3월 22일
Try using double/logical. If the vlaue is 250, it should work. Read about double. But I am surprised..why you want to index with a pixel value.
Yohanes Setiawan
Yohanes Setiawan 2019년 3월 22일
using double will output the same thing. I want to index with a pixel value because I want to multiply lambda with the L in k-intensity.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by