为什么Matlab显示"索引超出矩阵维度。"?

时间:2014-09-02 02:56:32

标签: 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')

为什么它显示“索引超出矩阵维度。”?在我终于策划之前?我是新人,并提前感谢! :)

2 个答案:

答案 0 :(得分:3)

在线:

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

您要求数组n的第1行到histArray1n从1到length(data1),大于histArray1的长度( 256)。所以它超出界限。

这个循环:

for n=1:length(data1)
    number1=sum(histArray1(1:n));
end
如果你想绘制直方图,

似乎没必要。

还有一个提示,有一个名为hist的函数可用于计算直方图将结果绘制在一行的条形图中:

hist(data1(:), 0:255)

答案 1 :(得分:0)

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