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

 採用された回答

Walter Roberson
Walter Roberson 2012 年 11 月 19 日

1 投票

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 件のコメント

satish thapaliya
satish thapaliya 2012 年 11 月 19 日
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.
Walter Roberson
Walter Roberson 2012 年 11 月 19 日
Please show that part of the code, and show the error message.
satish thapaliya
satish thapaliya 2012 年 11 月 20 日
編集済み: Walter Roberson 2012 年 11 月 20 日
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'.
Walter Roberson
Walter Roberson 2012 年 11 月 20 日
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.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeImages についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by