MATLAB 中怎样初始化一个很大的稀疏矩阵

补充一下,我需要一个很大的稀疏矩阵,先对其进行初始化,然后期中的某些子矩阵和元素需要单独定义,怎样生成一个这样的初始化的矩阵呢,比如我需要一个m×n的矩阵,直接用spar... 补充一下,我需要一个很大的稀疏矩阵,先对其进行初始化,然后期中的某些子矩阵和元素需要单独定义,怎样生成一个这样的初始化的矩阵呢,比如我需要一个m×n的矩阵,直接用sparse(m,n),生成一个全是零元素的矩阵,然后再具体定义其他元素么?

我这样做了,可是MATLAB 提示我这样会让sparse 变慢,请问哪位高手有更好的建议处理这个问题吗?
展开
 我来答
jjsocc
2011-08-17 · 超过12用户采纳过TA的回答
知道答主
回答量:27
采纳率:0%
帮助的人:39.7万
展开全部
用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
追问
谢谢您的回答,我知道sparse的用法,可是根据我在原先提问中问到的情况,想知道有没有更好的办法
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
东莞大凡
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进... 点击进入详情页
本回答由东莞大凡提供
时雨自然同5
2011-08-17 · TA获得超过950个赞
知道小有建树答主
回答量:1071
采纳率:0%
帮助的人:472万
展开全部
同问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式