2017-02-06 118 views
0

我想製作一個代碼,可以計算出每行由兩個值組成的矩陣中的10個百分位數:工作小時數和工資。百分位數應以工資爲基礎,但顯示工資跨度內個人的平均工作小時數。如何在matlab中使用百分位數

我總共有我的基質約3000行,但這裏是數據的樣子(實際數據沒有標題,我只是把他們在這裏以使其更具可讀性):

Wage/h Work(h) 
12  1572 
15  1671 
32  1782 
78  1254 
22  0 

我明白prctile必須是正確的功能使用,但我不知道如何使用它。感謝所有幫助。 :-)

回答

2

您想使用prctile來計算數據的百分位數。然後,您可以使用bsxfun>=將每個數據點與每個百分比值進行比較。然後,您可以使用cumsum爲每個數據點提供組索引,然後使用accumarray來計算每個組的平均值。

% Compute the percentiles 
percentiles = prctile(data(:,1), 0:10:90); 

% Determine which percentile each wage is within 
tmp = cumsum(bsxfun(@ge, data(:,1), percentiles), 2); 
group = tmp(:,end); 

% Compute the mean hours for each group 
mean_wages = accumarray(group, data(:,2), [], @mean); 
+0

謝謝,工作就像一個魅力:) – KGB91