how to correct subscript indices error in following codes?

a=0.85;
for i=1:7
filename=strcat('D:\2nd year\EXP season 2\Dry\cat1\',num2str(i),'.bmp');
I=imread(filename);
I1=I(:,:,2);
I2=I(:,:,3);
G_Channel_cat1(i-2)=mean(mean(I1(293+(-5:5),285+(-5:5))))-mean(mean(I2(293+(-5:5),285+(-5:5))))*a;
end

 Accepted Answer

When i is 1, i-2 is going to be -1, and you cannot store into element number -1 of G_Channel_cat1.
It is not obvious what you are trying to do in that assignment statement, so I cannot suggest any fix other than not subtracting 2 from "i" at that point.

4 Comments

even on changing value of i from 3 to 9 when i try to plot G-Channel against seven different x values, the problem switchs to undefined function or method for input arguements of type double.
Please show that part of the code, and show the error message.
Here is the code and error message
a=0.85;
for i=3:9
filename=strcat('D:\2nd year\EXP season 2\Dry\cat1\',num2str(i),'.bmp');
I=imread(filename);
I1=I(:,:,2);
I2=I(:,:,3);
G_Channel_cat1(i-2)=mean(mean(I1(293+(-5:5),285+(-5:5))))-mean(mean(I2(293+(-5:5),285+(-5:5))))*a;
end
for i=3:9
filename=strcat('D:\2nd year\EXP season 2\Dry\cat2\',num2str(i),'.bmp');
I=imread(filename);
I1=I(:,:,2);
I2=I(:,:,3);
G_channel_cat2(i-2)=mean(mean(I1(301+(-5:5),284+(-5:5))))-mean(mean(I2(301+(-5:5),284+(-5:5))))*a;
end
for i=3:9
filename=strcat('D:\2nd year\EXP season 2\Dry\cat3\',num2str(i),'.bmp');
I=imread(filename);
I1=I(:,:,2);
I2=I(:,:,3);
G_channel_cat3(i-2)=mean(mean(I1(310+(-5:5),283+(-5:5))))-mean(mean(I2(310+(-5:5),283+(-5:5))))*a;
end
for i=3:9
filename=strcat('D:\2nd year\EXP season 2\Dry\cat4\',num2str(i),'.bmp');
I=imread(filename);
I1=I(:,:,2);
I2=I(:,:,3);
G_channel_cat4(i-2)=mean(mean(I1(320+(-5:5),285+(-5:5))))-mean(mean(I2(320+(-5:5),285+(-5:5))))*a;
end
x=[0.121,0.422,0.844,4.219,12.053,21.094,60.267];
for i=1:7
y(i)=(G_channel_cat1(i)+G_channel_cat2(i)+G_channel_cat3(i)+G_channel_cat4(i))/4;
end
plot(y,x,'r')
??? Undefined function or method 'G_channel_cat1' for input arguments of type 'double'.
Your first "for" loop assigns to G_Channel_cat1 which has an upper-case C. All your other variables use a lower-case C there.

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!