大牛们,matlab中这个稀疏矩阵怎么表示啊?
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/12 08:11:03
大牛们,matlab中这个稀疏矩阵怎么表示啊?
D=diag([ones(1,m11),-ones(1,m12)]);其中m11比较大,只会ones(1,m11)的稀疏矩阵的表示形式speye(m1)
D=diag([ones(1,m11),-ones(1,m12)]);其中m11比较大,只会ones(1,m11)的稀疏矩阵的表示形式speye(m1)
sparse(D)
再问: 请问怎么不用D,并能稀疏矩阵表示出来
再答: [speye(m11) -speye(m12)]
我感觉你的问题好像写错了。你到底要写eye矩阵还是1行N列的行矩阵???
ones(1,m11)的稀疏矩阵可不是speye(m1)啊。
如果是ones行矩阵,sparse之后占得空间更大
再问: 恩,我写的不是很清楚,我是因为写D=diag([ones(1,m11),-ones(1,m12)])的时候说内存溢出,所以我想通过稀疏矩阵来表示出D,另外,[speye(m11) -speye(m12)]我试了下,说是维数不一致
再答: m11和m12大小不一样的话是不可能不出错的。 你给个短些的例子,好让我搞清楚你到底想要什么样的输入和输出吧...
再问: 我之前的是[m1,n1]=size(A);[m2,n2]=size(B); D=diag([ones(1,m1),-ones(1,m2)]);以前都有可以运行的,现在由于A,B的数量级增大很多倍,所以就出现了内存溢出,想通过稀疏矩阵来解决,m1.m2是不相等的
再答: 懂了。
speye(m1+m2);
试试这样可以不
再问: 但是那个m2方阵是负的单位阵,我不会表示,speye(m1+m2);应该是把m2方阵表示成正的单位阵了吧
再答: 哦对,我给忘了,不好意思。
D = speye(m1+m2);
D(:,m1+1:end) = -D(:,m1+1:end);
看看这样呢
再问: 请问怎么不用D,并能稀疏矩阵表示出来
再答: [speye(m11) -speye(m12)]
我感觉你的问题好像写错了。你到底要写eye矩阵还是1行N列的行矩阵???
ones(1,m11)的稀疏矩阵可不是speye(m1)啊。
如果是ones行矩阵,sparse之后占得空间更大
再问: 恩,我写的不是很清楚,我是因为写D=diag([ones(1,m11),-ones(1,m12)])的时候说内存溢出,所以我想通过稀疏矩阵来表示出D,另外,[speye(m11) -speye(m12)]我试了下,说是维数不一致
再答: m11和m12大小不一样的话是不可能不出错的。 你给个短些的例子,好让我搞清楚你到底想要什么样的输入和输出吧...
再问: 我之前的是[m1,n1]=size(A);[m2,n2]=size(B); D=diag([ones(1,m1),-ones(1,m2)]);以前都有可以运行的,现在由于A,B的数量级增大很多倍,所以就出现了内存溢出,想通过稀疏矩阵来解决,m1.m2是不相等的
再答: 懂了。
speye(m1+m2);
试试这样可以不
再问: 但是那个m2方阵是负的单位阵,我不会表示,speye(m1+m2);应该是把m2方阵表示成正的单位阵了吧
再答: 哦对,我给忘了,不好意思。
D = speye(m1+m2);
D(:,m1+1:end) = -D(:,m1+1:end);
看看这样呢