(非常)慢elementwise部门使用大型稀疏矩阵。

160(30天)
这就跟你问声好!
我写了一个非常大型的代码。一小部分的代码需要解决的大部分时间。
代码的一小部分,需要很长时间才能解决包含在这里。
φ和x N x 1完整的向量和H NxN稀疏矩阵。稀疏,在某种意义上,它有一个非常小的非零项矩阵本身的类型。N是约。50.000和p是一个积极,实数。
sinxe = x ^ p。*罪(φ);
cosxe = x ^ p。* cos(φ);
Hssin = H * sinxe;
Hscos = H * cosxe;
Htsin = sinxe”。* H;
Htcos = cosxe”。* H;
HtDt = (Htcos。/ Hscos + Htsin。* (Hssin. / Hscos。^ 2))。/ (Hssin ^ 2. / Hscos。^ 2 + 1)
与HtDt需要很长时间才能解决,即使我用稀疏矩阵和矢量化我的输入。什么好主意吗?

答案(1)

史蒂文的主
史蒂文的主 2023年5月10日中午
由此产生的矩阵不会很稀疏。任何地方你Hscos 0(包括隐式存储0)结果将包含一个非限定的,非零值。
Hscos = speye (5)
Hscos =
(1,1)1 (2,2)1 (3,3)1 (4,4)1 (5,5)1
y = / Hscos稀疏(1)
y =
(1,1)1(2,1)正(3,1)正(4,1)正(5、1)正(1、2)正(2,2)1(3 2)正(4,2)正(5,2)正(1、3)正(2、3)正(3,3)1(4,3)正(5,3)正(1、4)正(2、4)正(3,4)正(4,4)1(5,4)正(1、5)正(2、5)正(3、5)正(4、5)正(5,5)1
完全=全(y);%进行比较
Hscos y完全
类属性名称大小字节Hscos 5 x5 128双稀疏完全5 x5 200双y 5 x5 448双稀疏
你消费 更多的 内存存储y(非零)的每个元素作为一个稀疏矩阵比你会如果你保存它作为一个完整的矩阵!
一个潜在的方法是提取稀疏矩阵的非零元素Hscos,除以相应位置的元素在另一个矩阵,在Hscos和治疗有一个0 0的结果。我不知道这是最好的方法你想解决潜在问题,但如果这些0实际上是重要的然后你需要操作你的矩阵的完整版本。
3评论
基督教Troelsgaard
基督教Troelsgaard 2023年5月10日在十六21
编辑:基督教Troelsgaard 2023年5月10日16:24
由于当前implemementation的完整代码,我不能(容易,至少)计算了N 3600以下。
但是,我可以说,使用间谍(HtDt),它也显示了一个带状布局类似于H . HtDt的大小是小于H。
x = 1 e - 3和1之间,p是3,φ是间隔的π-π。
我知道H的条目是一个有限的真正的积极价值在某些区间我定义我和带状沿对角线。

登录置评。

类别

找到更多的在创建和连接矩阵帮助中心文件交换

s manbetx 845


释放

R2023a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!