Afficient way to create "sum matrix"

1 次查看(过去 30 天)
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

采纳的回答

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

更多回答(1 个)

Orr Streicher
Orr Streicher 2021-2-1
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 个评论
Stephen23
Stephen23 2021-2-1
编辑:Stephen23 2021-2-1
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 2021-2-1
编辑:Orr Streicher 2021-2-1
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)

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Sparse Matrices 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by