adding counts of ordered pairs
Mostrar comentarios más antiguos
I have a sequence of
by 3 arrays, say
,
, …,
that are generated within a loop. That is, the number of rows of each array varies, but each array has three columns. The first two columns represent ordered pairs. The third column is the count of those ordered pairs. I want to "add" these together so that I get an array that accumulates the counts of these ordered pairs into a new array that is
with the same structure. For example, if
is
by 3 arrays, say
,
, …,
isA1=[1 4 3;
3 5 1;
12 4 7;
13 5 2;
14 1 1];
and
is
isA1=[1 5 1;
13 5 1;
13 7 3;
14 1 5];
then the cumulative matrix should be
A=[1 4 3;
1 5 1;
3 5 1;
12 4 7;
13 5 3;
13 7 3;
14 1 6];
The arrays being "summed" in this way have hundreds of entries and are themselves summaries of arrays with thousands of entries, so efficiency matters.
Respuesta aceptada
Más respuestas (1)
Bruno Luong
el 6 de Sept. de 2022
Editada: Bruno Luong
el 6 de Sept. de 2022
A1=[1 4 3;
3 5 1;
12 4 7;
13 5 2;
14 1 1];
A2=[1 5 1;
13 5 1;
13 7 3;
14 1 5];
A12=[A1; A2];
[A12u,~,J]=unique(A12(:,1:2),'rows','stable');
A=[A12u,accumarray(J,A12(:,3))]
7 comentarios
Barbara Margolius
el 6 de Sept. de 2022
Editada: Barbara Margolius
el 6 de Sept. de 2022
Bruno Luong
el 6 de Sept. de 2022
Editada: Bruno Luong
el 6 de Sept. de 2022
I hope you don't have such case where Bjorn's method fails
A1=[1 1 1];
A2=[1 1 -1];
or pairs are not integer >= 1.
Barbara Margolius
el 6 de Sept. de 2022
Editada: Barbara Margolius
el 6 de Sept. de 2022
Bruno Luong
el 6 de Sept. de 2022
floor can returns 0 no?
Barbara Margolius
el 6 de Sept. de 2022
Bjorn Gustavsson
el 6 de Sept. de 2022
@Bruno Luong: The amount of subconsious/implicit assumptions I make when writing QD-solutions is a bit frightening.
Bruno Luong
el 6 de Sept. de 2022
That's called "intuition".
Categorías
Más información sobre Matrices and Arrays en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!