2014-09-02 121 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)