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.

Categories

Find more on Sparse Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!