Afficient way to create "sum matrix"

1 view (last 30 days)
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

Accepted Answer

Stephen23
Stephen23 on 1 Feb 2021
g = 1:3;
m = g+g(:)
m = 3×3
2 3 4 3 4 5 4 5 6

More Answers (1)

Orr Streicher
Orr Streicher on 1 Feb 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 Comments
Stephen23
Stephen23 on 1 Feb 2021
Edited: Stephen23 on 1 Feb 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 on 1 Feb 2021
Edited: Orr Streicher on 1 Feb 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)

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!