2014-09-02 357 views
3

这里是我的MATLAB代码:为什么Matlab显示“索引超出矩阵尺寸”?

gg=imread('fsu_Westcott.jpg'); 
data1=gg(:,1); 
histArray1=zeros(1,256); 
x=0:1:255; 
for n=1:length(data1) 
histArray1(1,data1(n)+1)=histArray1(1,data1(n)+1)+1; 
end 
for n=1:length(data1) 
number1=sum(histArray1(1:n)); 
end 
plot(x,number1,'r') 

为什么显示 “指数超过矩阵尺寸。”?在我终于剧情之前?我是新的,并提前感谢! :)

回答

0

对我来说,它看起来像你一些你想要修复的东西。为了解决西蒙指出的错误,我想你会希望你的第二个For循环从1到length(histArray)(或256),而不是length(data1)。我看到的第二个问题是,在第二个For循环中,您没有构建数组 - 您只是一遍又一遍重新定义变量number1。相反,您应该将number1(n)=sum(histArray1(1:n));放在for循环中。这与您看到的错误没有关系,但它可以帮助您从脚本中获得想要的内容。

3

就行:

number1=sum(histArray1(1:n)); 

你所要求的电池1到阵列histArray1nn变为从1到length(data1)比的histArray1(256)的长度大。所以它出界了。

这个循环:

for n=1:length(data1) 
    number1=sum(histArray1(1:n)); 
end 

,如果你想反正来绘制直方图似乎没有必要。

一个提示,有一个叫hist功能,你可以用它来都计算直方图阴谋的结果,某行的条形图:

hist(data1(:), 0:255)