八度如何创建稀疏子矩阵

2024-04-25 21:04:51 发布

您现在位置:Python中文网/ 问答频道 /正文

八度音阶的一个奇妙的特性是它如何处理稀疏矩阵。我的任务是将一些倍频程代码复制到fortran中(速度很关键),特别是给定一个稀疏矩阵稀疏(节点,节点),我需要得到子矩阵子空间(afew,afew):

r=4;c=6;k=5;nz=r*k;
Sparse=spalloc(r,c,nz);
Sparse(1,1)=1;Sparse(1,2)=2;Sparse(3,5)=4;Sparse(4,6)=6;
SubSparse=Sparse([1,4],[1,6])

完整矩阵为:

Sparse
1.000 2.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 4.000 0.000
0.000 0.000 0.000 0.000 0.000 6.000

SubSparse
1.000 0.000
0.000 6.000

我有read,和this

我不能做的一件事是重新创建完整的矩阵,因为它们太大了,无法放入机器中。你知道吗

在我的fortran稀疏矩阵实现中,我使用Hartwell-Boeing存储,由我使用SuperLU来求解线性系统决定。我相信octave的压缩列格式非常相似。你知道吗

我的问题是在哪里可以找到(a)执行MWE的第4行时发生的事情背后的逻辑和(b)代码


Tags: 代码节点空间矩阵特性速度关键sparse
1条回答
网友
1楼 · 发布于 2024-04-25 21:04:51

你正在索引稀疏矩阵,所以需要查看Sparse class,它是C++中的LiBOcTave的一部分。您似乎正在寻找的方法是^{}。你知道吗

如果您计划在另一个程序上使用该实现,请注意代码的许可证是GPLv3+。你知道吗

相关问题 更多 >