Borrar filtros
Borrar filtros

Random dot product tricks

3 visualizaciones (últimos 30 días)
Jesse
Jesse el 27 de Sept. de 2013
Comentada: Jesse el 29 de Sept. de 2013
Greetings again,
I have two arrays:
x = [1.3, 5.6, 7.8, -6.5, 0.3]
y = [134.2, 8786.98, -22.4, 4553518.6, 0.0019]
Now, I know how to do the dot product
a=dot(x,y)
and the reverse (i.e, the first dot product has the summation from 1 to 5, but the reverse is 5 to 1),
so
xback = fliplr(x);
yback = fliplr(y);
b=dot(x,y)
but what about largest-to-smallest order dot produc? Is there anyway to organize that in MATLAB from the original arrays?
I didn't know if this was with the sort command.
Thanks!

Respuesta aceptada

Walter Roberson
Walter Roberson el 27 de Sept. de 2013
Editada: Walter Roberson el 27 de Sept. de 2013
xy = x.*y;
dotxy = sum(sort(xy(xy>0), 'descend')) + sum(sort(xy(xy<0)));
  1 comentario
Jesse
Jesse el 29 de Sept. de 2013
Yes - that's what I was looking for. Very tight too!
Thanks Walter!

Iniciar sesión para comentar.

Más respuestas (1)

Azzi Abdelmalek
Azzi Abdelmalek el 27 de Sept. de 2013
Editada: Azzi Abdelmalek el 27 de Sept. de 2013
If you sort a or b or both the result will be different.
Maybe you want to do other thing. Clarify what you want to achieve
% dot(a,b) is the same then sum(a.*b)
  3 comentarios
Azzi Abdelmalek
Azzi Abdelmalek el 27 de Sept. de 2013
No this is not clear, illustrate with a numeric example
Jan
Jan el 27 de Sept. de 2013
Editada: Jan el 27 de Sept. de 2013
What is your purpose of creating the partial sums at first? Do you want to increase the accuracy of the result? Then better use FEX: XSum: XSum(a .* b).

Iniciar sesión para comentar.

Categorías

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

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by