count the values based on ID and create a new matrix
古いコメントを表示
Input:
LAT LON VALUE
12.4 91.4 4
31.4 45.6 1
45.9 91.5 2
18.4 96.4 3
11.4 75.6 2
25.9 51.5 4
12.4 91.4 4
31.4 45.6 2
45.9 91.5 2
As you can see some of the lat lon's are repeated with different values, so I want to know for a lat lon, how many times (count) a values is observed. I have a input matrix of (90,000, 3)
LAT LON cnt = 1 cnt=2 cnt=3 cnt =4
12.4 91.4 0 0 1 2
31.4 45.6 1 1 0 0
45.9 91.5 0 1 2 0
18.4 96.4 0 0 1 0
11.4 75.6 0 1 0 0
25.9 51.5 0 0 0 1
I tried table, I could not figure out.
9 件のコメント
KALYAN ACHARJYA
2019 年 2 月 10 日
sample={'LAT' 'LON' 'cnt=1' 'cnt=2' 'cnt=3' 'cnt=4';12.4 91.4 1 0 3 0;31.4 45.6 2 4 0 9;45.9 91.5 10 0 9 20}
sample =
'LAT' 'LON' 'cnt=1' 'cnt=2' 'cnt=3' 'cnt=4'
[12.4000] [91.4000] [ 1] [ 0] [ 3] [ 0]
[31.4000] [45.6000] [ 2] [ 4] [ 0] [ 9]
[45.9000] [91.5000] [ 10] [ 0] [ 9] [ 20]
nlm
2019 年 2 月 10 日
madhan ravi
2019 年 2 月 10 日
Give an example of your desired output explicitly.
nlm
2019 年 2 月 10 日
nlm
2019 年 2 月 10 日
madhan ravi
2019 年 2 月 10 日
Which version of matlab are you using?
nlm
2019 年 2 月 10 日
madhan ravi
2019 年 2 月 10 日
Well good then :
t=[12.4 91.4 4
31.4 45.6 1
45.9 91.5 2
18.4 96.4 3
11.4 75.6 2
25.9 51.5 4
12.4 91.4 4
31.4 45.6 2
45.9 91.5 2];
T=array2table(t,'VariableNames',{'LAT','LON','COUNT'})
groupsummary(T,{'LAT','LON','COUNT'}) % gives almost your result but in more compact way
nlm
2019 年 2 月 10 日
回答 (1 件)
Image Analyst
2019 年 2 月 10 日
1 投票
Use unique() to get unique rows. Then for each unique row (lat,lon combination), call histogram.
3 件のコメント
nlm
2019 年 2 月 10 日
編集済み: Image Analyst
2019 年 2 月 10 日
Image Analyst
2019 年 2 月 10 日
Hist is an object. Look at it's properties and methods and you'll know what to do. Take the semicolon off of that line to see the properties.
カテゴリ
ヘルプ センター および File Exchange で Data Distribution Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!