獲得一維資料的峰值 C Matlab

2021-10-10 12:16:55 字數 1266 閱讀 7048

本方法源自於求解影象功率譜中某列(一維離散資料)的峰值之間的距離問題。比如輸入的一維離散資料的分布如下:

即從左到右,分別代表下標從1到n(c/python中為0到n-1)的數值大小,間隔為1,n表示輸入一位資料的長度。在此對資料的峰重新定義:滿足左右值都比它小的等值區間,比如[1,2,2,1]的[2,2]、[1,2,0]的[2]都是資料的「峰」,但[1,2,2,4]、[1,2,2,2]不存在峰。所有峰中最高的峰稱作「主峰」,其他為「次峰」。對於以上的例子,所有峰已手動圈出。

如圖所示,共18個峰。現在問題是,輸入一組資料,怎麼求得所有的峰的值(或者座標)呢?(座標用中點表示區間)

在這以座標為例,每個峰的座標由它所在區間的中點表示。

首先在這裡定義兩個變數:start_peak和end_peak。分別動態表示每個峰的區間開始和結束的座標。

遍歷一維資料,如果當前資料的值大於上乙個(左側)資料的值,說明位於上公升過程,更新start_peak為當前值的下標;如果小於,(並且start_peak的值不是初始化值),說明上乙個資料的下標已經是該峰的區間結束座標,更新end_peak為上乙個值的下標,這樣就得到了這個峰的開始和結束兩個座標,所以在更新之後緊接著將start_peak和end_peak的平均值儲存在結果中,同時start_peak歸為初始化值(防止下降過程中每次都會儲存乙個峰,和上一段粗體呼應)。最後遍歷結束返回即可。其他峰值或區間等同理稍微修改就能夠獲得。

matlab版**:

function peak_index=find_peak(data)

n=length(data);%資料長度

start_peak=0;%初始化

end_peak=0;

t=0;

for i=1:n

if (i>=2 && data(i)>data(i-1))

start_peak=i;

endif (i>=2 && data(i)c++版:(沒有跑過,純直接翻譯)

vectorfind_peak(vector& data)

}return ans;

}

最後的返回的結果:

經過對比後,和一致。

如何計算的LTE峰值資料率?

您可能會聽到很多次了,lte的峰值資料速率約為300mbps的?如何計算出來的數字?背後什麼是假設?讓我們用乙個簡單的方法估計它。假設20 mhz通道頻寬,正常的cp,4 4 mimo。首先,計算資源元素 re 的數目與20mhz通道頻寬的子幀 12個子載波 7個ofdma符號 100個資源塊 2個...

python 一維資料和二維資料的儲存,表達和處理

資料的維度是資料的組織形式 資料的操作週期 缺點是資料中不能存在空格 缺點是資料中不能存在逗號 可以利用特殊符號或者特殊符號組合進行分隔例如 缺點 需要根據資料特點進行定義,通用性比較差 指的是資料儲存格式和表達方式之間的轉換 舉例 中國 美國 日本 法國 羅斯 越南 txt f.open data...

獲得資料的post,get

get方法 請求部分直接附在路徑的後面 因此沒有輸出流輸出請求部分 並且容易洩密 string path string line null try post方法 需要設定請求頭 請求方法,保密性高,多使用 try outputstream out conn.getoutputstream byte ...