[討論] 分組求平均問題

作者: jenny33377 (澄)   2018-12-07 23:14:55
我的問題是我有一組data如下
Record_ProEst_P_and_ASR = [0.2 0.5
0.6 0.6
0.5 0.8
0.9 0.5]
想利用data第一行資料分組
例如分組區間為interval = [0, 0.01, 0.21, 0.41, 0.61, 0.81, 1]
之後判斷在data(1,:)落於
0~0.01、0.01~0.21、0.21~0.41、0.41~0.61、0.61~0.81內的data第二行資料平均
也就是會得到[0, 0.5, 0, 0.7, 0, 0,5]
我目前的寫法如下
average_Record_ASR = zeros(length(interval)-1,1);
sum_Record_ASR = [];
for i = 1:length(interval)-1
for j = 1:length(Record_ProEst_P_and_ASR)
if Record_ProEst_P_and_ASR(j,1) >= interval(i) & Record_ProEst_P_and_ASR(j,1) < interval(i+1);
sum_Record_ASR = [sum_Record_ASR, Record_ProEst_P_and_ASR(j,2)];
average_Record_ASR(i,1) = sum(sum_Record_ASR)/length(sum_Record_ASR);
end
end
sum_Record_ASR = [];
end
但這樣寫法等於是每個區間都要判斷一次數列,
當我的data有10^8筆的時候,
就跑超久的
不知道有沒有更好的辦法
有想說先將data進行排序,然後判斷過的不要在判斷
但實在想不出來QQ
作者: sunev (Veritas)   2018-12-08 04:12:00
data=Record_ProEst_P_and_ASR;[~,~,subs]=histcounts(data(:,1),interval);accumarray(subs,data(:,2),[length(interval)-1 1],@mean)

Links booklink

Contact Us: admin [ a t ] ucptt.com