Index in position 2 exceeds array bounds. (reason for error)
Show older comments
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 Comment
lakshmi amruthavalli P
on 15 Apr 2022
Answers (1)
Walter Roberson
on 15 Apr 2022
[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.
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!