这是我的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 :(得分:3)
在线:
number1=sum(histArray1(1:n));
您要求数组n
的第1行到histArray1
但n
从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循环中。这与您所看到的错误无关,但它可能会帮助您从脚本中获得所需内容。