C++
這是我的函數調用Matlab來C++代碼轉換
int gr_tperctile = tprctile(channel_gr, sizeOfChannel, 0.2);
這是我寫的函數
int Detection::tprctile(int* gr, int sizeOfChannel, double pt)
{
qsort(gr,sizeOfChannel, sizeof(int),compare);
int ptInd = floor((pt/100 * sizeOfChannel) +0.5);
return gr[ptInd];
}
int compare(const void * a, const void * b)
{
return (*(int*)a - *(int*)b);
}
MATLAB
這是原來的函數調用
toolbox.c3d.p.tprctile(Gr(:),0.2)
這是原始功能
function val = tprctile(data, pt)
data = sort(data);
ptInd = round(pt/100 * length(data));
val = data(ptInd);
我不知道我的執行情況,並就測試實例數量有限。 任何人都可以告訴我,如果這是正確的?或更好的方法來實現matlab
訪問數據數組時,您可能會遇到錯誤的問題; C++使用基於0的索引,基於MATLAB 1。 – Amro 2014-11-03 22:18:25
如果你想返回某些數據的第n百分位數,那麼這個['prctile']就有一個函數。(http://www.mathworks.com/help/stats/prctile.html) – Amro 2014-11-03 22:20:54
@Amro:也許他沒有統計工具箱,或者不希望樣本間插值。 – 2014-11-03 22:22:18