Re: [問題] nan的影響
※ 引述《y1027330 (leon)》之銘言:
: 標題: [問題] nan的影響
: 時間: Sat Apr 28 19:25:04 2012
:
:
: 我有150筆資料
:
: 每筆都是 [1*9000]的矩陣
:
: 這150筆資料 中nan的數 不固定
:
: 也就是說 第一筆可能有 150個nan 第二筆 可能就有300個nan之類的
:
: 我現在想算這150筆資料中
:
: 每筆最大10%的數的平均 跟最小10%的數的平均
:
: 假設 150筆資料較 a_1 ...... a_150
:
: 每個都是 a_1(1,9000) a_2(1,9000).........
:
: a=dir(a_*.mat);
:
: for i=1:150
:
: 先單看 i=1
:
: a_min=sort(a(i,:)) 把值從小排到大 因為nan會被排在後面 所以下一步
:
: a=sum(1:length(a_min)*1/10)/length(a_max)*1/10
:
: 做相加的時候 因為取到nan 所以整個變nan
:
:
:
: %%%這邊我要算最大10%的平均
:
: a=(isnan(a))=0; 因為從大到小 nan就會被排到前面 所以我要把它變成0
:
: a_max=sort(a(i,:),'descend') 這樣排完 原本的nan 變成0跑到後面了
:
: a=sum(1:length(a_max)*1/10)/length(a_max)*1/10 這是最大10%的平均
:
:
: 但我假如 我想要取的10% 沒有包括 nan
:
: 也就是我想去掉nan這個值 然後取剩下的有值的數
:
: 最大前10%的平均 跟最小後10%的平均 我該怎麼做阿
:
: 不用到cell有機會嗎??
:
:
: 希望高手能幫忙解決 1000p當作贈禮了
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 140.115.120.39
直接把 NaN 拿掉比較快
假定 a = [1 2 3 NaN 5 6 NaN 7 -1 -2] 為內涵 NaN 的矩陣...
小到大為:
b=sort(a(~isnan(a)))
= -2 -1 1 2 3 5 6 7
大到小為:
c=sort(a(~isnan(a)),'descend')
= 7 6 5 3 2 1 -1 -2
再取原先數量的前10%就好。
不過要注意陣列大小的改變,以及殘存的個數是否還大於等於原先的10%。
--
推
02/06 15:45,
02/06 15:45
推
02/06 16:42,
02/06 16:42
→
02/06 16:55,
02/06 16:55
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.230.96.66
推
04/30 10:21, , 1F
04/30 10:21, 1F
→
04/30 10:22, , 2F
04/30 10:22, 2F