Adding numbers in array in a specific order

4 visualizaciones (últimos 30 días)
Raza Hassan
Raza Hassan el 25 de Mzo. de 2020
Comentada: Raza Hassan el 26 de Mzo. de 2020
Need to create a code for the following statement:
let a=[1 3 5 6 6 7 7 7] , b=[81 122 245 329 656 790 850 1023]
c=[1 1 1 2 3] where c is showing how many times a unique value of a has been repeated e.g. '1' is repeated '1' time, '6' is repeated '2' times and so on.
Now what I need to do is to create d such that if 1st index of c is 1 then assign 1st index value of b to d and if 1st index of c is 2 then assign 1st and 2nd index value of b to d.
In short what I need is d which will have value d=[81 122 245 329+656 790+850+1023].
Will appreciate your help:D

Respuesta aceptada

Stephen23
Stephen23 el 25 de Mzo. de 2020
>> [~,~,X] = unique(a);
>> d = accumarray(X(:),b(:))
d =
81
122
245
985
2663
  3 comentarios
Stephen23
Stephen23 el 26 de Mzo. de 2020
>> [~,~,x] = unique(a);
>> d = zeros(1,max(x));
>> for k = 1:numel(b), d(x(k)) = d(x(k)) + b(k); end
>> d
d =
81 122 245 985 2663
Raza Hassan
Raza Hassan el 26 de Mzo. de 2020
Thank you very much.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by