column-wise operation based on indices, accumarray?

if s and v are matrices of the same sizes.
s = [1 1
1 2
2 2
1 2
2 2
3 1
3 1];
v = [10 10
20 7
5 13
60 2
9 6
8 3
3 5];
For each column, find the mean of values of elements in matrix v with the same index in matrix s and replace the values with the mean.
m = [30 6
30 7
7 7
30 7
7 7
5.5 6
5.5 6]:
I know how to use unique and for loop to get the answer. I was wondering if there is a neater way.

 Respuesta aceptada

accumarray(s(:, 1),v(:,1),[],@mean)
Now do that for each column.
Where I wrote [] use [max(s(:)), 1] . Note this is not max of the column, it is overall maximum.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Productos

Versión

R2020b

Preguntada:

el 3 de Feb. de 2021

Respondida:

el 3 de Feb. de 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by