How to average certain elements in a matrix using for loop.
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello,
I am trying to operate on a matrix that has the following columns:
M=[x_coordinates y_coordinates ID] I would like to find the average x and y coordinates for same ID, in other words to group all the points that has the same ID. Can you please advice me on how to do it with Matlab.
Best regards, Jack
0 commentaires
Réponse acceptée
Azzi Abdelmalek
le 3 Mar 2014
A=[ 1 2 10;5 8 10;4 3 20]
c1=A(:,1);
c2=A(:,2);
[ii,jj,kk]=unique(A(:,3));
cc1=[ii accumarray(kk,c1,[],@mean)]
cc2=[ii accumarray(kk,c2,[],@mean)]
2 commentaires
Azzi Abdelmalek
le 3 Mar 2014
A=[ 1 2 10;5 8 10;4 3 20]
weight=[10;54;87]
c1=A(:,1);
[ii,jj,kk]=unique(A(:,3));
cc1=[ii accumarray(kk,c1.*weight,[],@mean)]
Plus de réponses (2)
Sean de Wolski
le 3 Mar 2014
doc accumarray
And an example:
%%sample data
n = 50;
id = randi(5,n,1);
x = rand(n,1);
y = rand(n,1);
%%engine
[uid,~,idx] = unique(id); % unique ids and the index of occurrences
mx = accumarray(id,x,[],@mean); % mean of x by id
my = accumarray(id,y,[],@mean); % mean of y by id
results = [uid mx my] % display
0 commentaires
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!