尋找波峰波谷也就是求極值
極值:data是你的資料,
find(diff(sign(diff(data)))==-2)+1
找到極大值的位置
find(diff(sign(diff(data)))==2)+1
找到極小值的位置
data(find(diff(sign(diff(data)))==-2)+1)和
data(find(diff(sign(diff(data)))==2)+1)
返回的是極大值和極小值
要想diff(sign(diff))出現-2,只有是sign的結果為-1,1排列的時候,-1代表,前一次的diff運算前面的數值比後面大,1代表,後一次diff運算後面的數值比前面大,因而,x-a,x,x+b,a,b均為正數,則x為極小值。
同理判斷極大值。
波峰波谷陣列
如果連續數字之間的差嚴格地在正數和負數之間交替,則數字序列稱為擺動序列。第乙個差 如果存在的話 可能是正數或負數。少於兩個元素的序列也是擺動序列。例如,1,7,4,9,2,5 是乙個擺動序列,因為差值 6,3,5,7,3 是正負交替出現的。相反,1,4,7,2,5 和 1,7,4,5,5 不是擺動序...
趣味演算法 求波峰波谷最大值
給乙個陣列,求它的最大的波峰波谷的落差。舉例 陣列 a 其中 6 和 9 被看做是波峰,2和5則是波谷。d 2,6 4,d 6,5 1,d 5,9 4.則 thus,maxd a 4.想法 波峰不一定是陣列中的最大值,他是趨勢向下的轉折點,波谷也不一定是陣列中的最小值,他是趨勢向上的轉折點。陣列中最...
陣列的波谷
找陣列的波谷 原題 乙個陣列a 1 n 滿足a 1 a 2 a n a n 1 a i 被成為波谷,意味著 a i 1 a i a i 1 請給出乙個演算法,找到陣列中的乙個波谷。o n 的方法,是很直接,有更快的方法麼?分析 這個題目遍歷一遍陣列,顯然就可以找到全部的波谷。時間複雜度o n 空間複...