Index in position 2 exceeds array bounds. (reason for error)
이전 댓글 표시
img=imread('D:/lena1.png');
[height, width]=size(img);
for a=1:8:height
disp(height);
for b=1:8:width
imgdct_8(a:a+7,b:b+7)=dct2(img(a:a+7,b:b+7));
end
end
for i=1:8
for j=1:8
qtz_mtrx(i,j)=1+((i+j)* 15);
end
end
답변 (1개)
Walter Roberson
2022년 4월 15일
[height, width]=size(img);
You are probably thinking that code is the same as
temp = size(img) ;
height = temp(1);
width = temp(2);
But it is not the same. Instead it means
temp = size(img);
height = temp(1);
width = prod(temp(2:end));
This matters because lena1.png is a color image, so your width ends up being 3 times what you expect.
카테고리
도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!