Index exceeds matrix dimensions. where is mistake

II=[14 23;44 15];
R=II(:)';
x=0.3;
p=0.343;
for n=2:4;
if x(n-1)>=0 & x(n-1)<=p
x(n)=x(n-1)/p;
else
x(n)=(1-x(n-1))/(1-p);
end
end
A=sort(x);
[A,T]=sort(x);
Y=R(T);
C=reshape(Y,[2,2]);
r = 3.8;
size = 4;
L(1)= 0.234;
for i=2:size
L(i) = r*L(i-1)*(1-L(i-1));
end
mm=min(L);
nn=max(L);
oo=nn-mm;
Z=uint8(8*((L-mm)/oo))+1;
%for i=1:9
%K(i)=mod((abs(L(i))-floor(abs(L(i))))*1e14,50);
%end
CC(1)=bitxor(mod(157,50),mod(Y(1)+Z(1),50));
for i=2:4
CC(i)=bitxor(mod(CC(i-1),50),mod(Y(i)+Z(i),50));
end
X=[12 13 13 14;12 15 16 34;17 18 19 13 ;12 34 32 31];
sX=size(X);
[cA,cH,cV,cD] = dwt2(X,'db4');
subplot(2,2,1);
imagesc(cA);
colormap gray;
title('Approximation');
subplot(2,2,2);
imagesc(cH);
colormap gray;
title('Horizontal');
subplot(2,2,3);
imagesc(cV);
colormap gray;
title('Vertical');
subplot(2,2,4);
imagesc(cD);
colormap gray;
title('Diagonal');
for m=1:2;
for n=1:2;
VV(m,n)=floor(C(m,n)/10);
DD(m,n)=mod(C(m,n),10);
end
end
S = idwt2(cA,cH,VV,DD,'db4',sX);

Answers (2)

In line number 17 you have defined
size = 4;
which you are using in your 'for' loop at line 19. This variable is clashing with Matlab inbuilt function 'size' which you are trying to use at line 34. Hence you are getting the error. Change the variable name.

1 Comment

Yes @Raj
Size variable name (line 7) is confliting with inbuilt function name.
II=[14 23;44 15];
R=II(:)';
x=0.3;
p=0.343;
for n=2:4;
if x(n-1)>=0 & x(n-1)<=p
x(n)=x(n-1)/p;
else
x(n)=(1-x(n-1))/(1-p);
end
end
A=sort(x);
[A,T]=sort(x);
Y=R(T);
C=reshape(Y,[2,2]);
r = 3.8;
size1 = 4; %%% Issue was here, I have change the variable name size to size1
L(1)= 0.234;
for i=2:size1
L(i) = r*L(i-1)*(1-L(i-1));
end
mm=min(L);
nn=max(L);
oo=nn-mm;
Z=uint8(8*((L-mm)/oo))+1;
%for i=1:9
%K(i)=mod((abs(L(i))-floor(abs(L(i))))*1e14,50);
%end
CC(1)=bitxor(mod(157,50),mod(Y(1)+Z(1),50));
for i=2:4
CC(i)=bitxor(mod(CC(i-1),50),mod(Y(i)+Z(i),50));
end
X=[12 13 13 14;12 15 16 34;17 18 19 13;12 34 32 31];
sX=size(X);
[cA,cH,cV,cD] = dwt2(X,'db4');
subplot(2,2,1);
imagesc(cA);
colormap gray;
title('Approximation');
subplot(2,2,2);
imagesc(cH);
colormap gray;
title('Horizontal');
subplot(2,2,3);
imagesc(cV);
colormap gray;
title('Vertical');
subplot(2,2,4);
imagesc(cD);
colormap gray;
title('Diagonal');
for m=1:2;
for n=1:2;
VV(m,n)=floor(C(m,n)/10);
DD(m,n)=mod(C(m,n),10);
end
end
S = idwt2(cA,cH,VV,DD,'db4',sX);

Sign in to comment.

Hello Sultan,
Could you send the error message? In your code you have initialised x = 0.3, which is a scalar. So x(n-1) will give rise to an error.
Also, after your for loop statement, you have put a semi colon (as shown below)
>> for n=2:4;
Hope this helps :)

2 Comments

x=0.3 is equivalent to x(1)=0.3 which is what is used while indexing x(n-1) for the first time. So no issue there. It will not give error. Also, semicolon after 'for' loop will not give any error.
Also, after your for loop statement, you have put a semi colon (as shown below)
>> for n=2:4;
No @Aiswarya, it does not matter, whether you put or not.
Let's Keep Learning!

Sign in to comment.

Asked:

on 4 Jul 2019

Edited:

on 4 Jul 2019

Community Treasure Hunt

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

Start Hunting!