MATLAB 中怎样初始化一个很大的稀疏矩阵
补充一下,我需要一个很大的稀疏矩阵,先对其进行初始化,然后期中的某些子矩阵和元素需要单独定义,怎样生成一个这样的初始化的矩阵呢,比如我需要一个m×n的矩阵,直接用spar...
补充一下,我需要一个很大的稀疏矩阵,先对其进行初始化,然后期中的某些子矩阵和元素需要单独定义,怎样生成一个这样的初始化的矩阵呢,比如我需要一个m×n的矩阵,直接用sparse(m,n),生成一个全是零元素的矩阵,然后再具体定义其他元素么?
我这样做了,可是MATLAB 提示我这样会让sparse 变慢,请问哪位高手有更好的建议处理这个问题吗? 展开
我这样做了,可是MATLAB 提示我这样会让sparse 变慢,请问哪位高手有更好的建议处理这个问题吗? 展开
2个回答
展开全部
用sparse命令
既可以从一个数组直接生成矩阵,也可以将现有矩阵中的零压缩掉后存储,节约内存
例如:
>> a=1:10;
>> b=[2 3 4 12 20 7 8 9 10 1];
>> c=[5 6 34 67 12 2 5 7 8 2];
>> A=sparse(a,b,c,20,20);
>> A
A =
(10,1) 2
(1,2) 5
(2,3) 6
(3,4) 34
(6,7) 2
(7,8) 5
(8,9) 7
(9,10) 8
(4,12) 67
(5,20) 12
>> size(A)
ans =
20 20
压缩存储矩阵示例:
A =
1 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0
0 0 3 0 0 0 0 0 0 0
0 0 0 4 0 0 0 0 0 0
0 0 0 0 5 0 0 0 0 0
0 0 0 0 0 6 0 0 0 0
0 0 0 0 0 0 7 0 0 0
0 0 0 0 0 0 0 8 0 0
0 0 0 0 0 0 0 0 9 0
0 0 0 0 0 0 0 0 0 10
>> sparse(A)
ans =
(1,1) 1
(2,2) 2
(3,3) 3
(4,4) 4
(5,5) 5
(6,6) 6
(7,7) 7
(8,8) 8
(9,9) 9
(10,10) 10
既可以从一个数组直接生成矩阵,也可以将现有矩阵中的零压缩掉后存储,节约内存
例如:
>> a=1:10;
>> b=[2 3 4 12 20 7 8 9 10 1];
>> c=[5 6 34 67 12 2 5 7 8 2];
>> A=sparse(a,b,c,20,20);
>> A
A =
(10,1) 2
(1,2) 5
(2,3) 6
(3,4) 34
(6,7) 2
(7,8) 5
(8,9) 7
(9,10) 8
(4,12) 67
(5,20) 12
>> size(A)
ans =
20 20
压缩存储矩阵示例:
A =
1 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0
0 0 3 0 0 0 0 0 0 0
0 0 0 4 0 0 0 0 0 0
0 0 0 0 5 0 0 0 0 0
0 0 0 0 0 6 0 0 0 0
0 0 0 0 0 0 7 0 0 0
0 0 0 0 0 0 0 8 0 0
0 0 0 0 0 0 0 0 9 0
0 0 0 0 0 0 0 0 0 10
>> sparse(A)
ans =
(1,1) 1
(2,2) 2
(3,3) 3
(4,4) 4
(5,5) 5
(6,6) 6
(7,7) 7
(8,8) 8
(9,9) 9
(10,10) 10
追问
谢谢您的回答,我知道sparse的用法,可是根据我在原先提问中问到的情况,想知道有没有更好的办法
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
东莞大凡
2024-08-07 广告
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进...
点击进入详情页
本回答由东莞大凡提供
展开全部
同问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询