2015-09-27 665 views
0

這裏是我的Matlab代碼:從MATLAB中的循環創建一個數組?

Length = length(High); 
i = 1; 
j = 20; 

while i < Length 
    HighestHIGH(i) = max(High(i:j)); 
    i = i+1; 
    j = j+1; 
end 

這使得在HighestHIGH線錯誤。我試圖完成的是:讓我們假設高是一個長度爲100(長度= 100)的數組。我想要在新陣列中獲得20個組中的最高數量。例:

HighestHIGH[1] = max(High(1:20)); 
HighestHIGH[2] = max(High(2:21)); 
HighestHIGH[3] = max(High(3:22)); 
... 
HighestHIGH[80] = max(High(81:100)); 
+1

「An」錯誤永遠不夠。什麼樣的錯誤? 「索引超出矩陣尺寸」?當'i ==長度1'時,然後j ==長度+ 18'超過'高'的大小。 –

+0

[您可以使用'filter'在單行代碼中實現同樣的功能](http://stackoverflow.com/a/26013645/2732801) – Daniel

+0

@Daniel,那麼將其作爲答案添加如何?它肯定應該用這個來完成(儘管最初的問題是「爲什麼這不起作用?」)。 –

回答

1

i==Length-1,然後j==Length+18這超過了High大小。你的循環的上限太高了。

我會這樣寫:

N=20; 
HighestHIGH=zeros(length(High)-N+1); 
for i=1:length(High)-N+1 
    HighestHIGH(i) = max(High(i:i+N-1)); 
end 

注意,你想要什麼,最後期限爲HighestHIGH(81)=max(High(81:100))