Afficient way to create "sum matrix"

1 vue (au cours des 30 derniers jours)
Orr Streicher
Orr Streicher le 1 Fév 2021
Modifié(e) : Orr Streicher le 1 Fév 2021
Hi,
So i would like to implement a function that get a vector as input lets :
g=[g1, g2, g3]
and return a matrix that contain a sum of pairs: so for g , the output matrix G contain 9 elements the G(i,j)=g(i)+g(j)
The problem is that g will be very large vector.
Does anyone know an efficient way to do that with sparse matrices
Thanks

Réponse acceptée

Stephen23
Stephen23 le 1 Fév 2021
g = 1:3;
m = g+g(:)
m = 3×3
2 3 4 3 4 5 4 5 6
  1 commentaire
Orr Streicher
Orr Streicher le 1 Fév 2021
Awesome!
thanks

Connectez-vous pour commenter.

Plus de réponses (1)

Orr Streicher
Orr Streicher le 1 Fév 2021
Hi,
So its looks like i was happy too soon =P
Since my vector g is very large ( vector in size of 65536)
I got memrory error ("Error using + Requested 65536x65536 (64.0GB)...)
Maybe there is other solution?
  2 commentaires
Stephen23
Stephen23 le 1 Fév 2021
Modifié(e) : Stephen23 le 1 Fév 2021
You could create a function, e.g.:
g = 1:3
g = 1×3
1 2 3
f = @(r,c)sum(g([r,c]));
f(1,2)
ans = 3
Your question mentions sparse matrices: are most of the values in g zero?
Orr Streicher
Orr Streicher le 1 Fév 2021
Modifié(e) : Orr Streicher le 1 Fév 2021
Hi,
In my case g doent have to be sparse (most of the values are not zero)
In addition i need the matrix form of G (for follwing calculations)

Connectez-vous pour commenter.

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by