Afficient way to create "sum matrix"

1 回表示 (過去 30 日間)
Orr Streicher
Orr Streicher 2021 年 2 月 1 日
編集済み: Orr Streicher 2021 年 2 月 1 日
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 日
Awesome!
thanks

サインインしてコメントする。

その他の回答 (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 Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by