matlab稀疏存储
对稀疏矩阵进行压缩存储目的是节省存储空间。
存储矩阵的一般方法是采用二维数组,其优点是可以随机地访问每一个元素,因而能够较容易地实现矩阵的各种运算。
但对于稀疏矩阵而言,若用二维数组来表示,会重复存储了很多个0了,浪费空间,而且要花费时间来进行零元素的无效计算。所以必须考虑对稀疏矩阵进行压缩存储。
(1)matlab稀疏存储扩展阅读
优点
稀疏矩阵的计算速度更快,因为MATLAB只对非零元素进行操作,这是稀疏矩阵的一个突出的优点。假设矩阵A,B中的矩阵一样,计算2*A需要一百万次的浮点运算,而计算2*B只需要2000次浮点运算。
因为MATLAB不能自动创建稀疏矩阵,所以要用特殊的命令来得到稀疏矩阵。算术和逻辑运算都适用于稀疏矩阵。对于一个用二维数组存储的稀疏矩阵Amn,如果假设存储每个数组元素需要L个字节,那么存储整个矩阵需要m*n*L个字节。
㈡ matlab稀疏存储一定会提高速度吗
您好,很高兴回答您的问题。稀毕瞎疏储存不一定会提高速度,稀疏储存只储存所有非零元素的值和位置,会提高元素储存的效率,但是也要注意外在条旅数判件,用在不恰当的时候可能会适得拆改其反,降低储存的速度。
㈢ MATLAB 生成稀疏矩阵
稀疏矩阵是指很少非零元素的矩阵,这瞎雹悔样的矩阵就成为稀疏矩阵,这种特性提供了矩阵存储空间和计算时间的优点。 我们可以使用MATLAB函数sparse把它转换成稀疏矩阵,该函数语法为: S=sparse(A)函数sparse()的更常用的用法是用来产生稀疏矩阵,具体语法如下: S=vsparse(r,c,s,m,n)其中r和c是我们希望产生的稀疏矩阵的矩阵中非零元素的行和列索引向量。参数s是一个向量,它包含索引对肆轿(r,c)对应的数值,m和n是结果矩阵的行维数和列维数。 如果要获得完成的矩阵,可以使用full()函数,函数语法磨正: A=full(s) 针对你的问题,要产生上三角稀疏矩阵,一个可能的思路是先产生上三角正常矩阵,在将其稀疏化 A = triu(ones(4,4))上述函数用来产生一个上三角矩阵,所以 S=sparse(A)将其转化为稀疏矩阵
㈣ 谁给详细解释下 matlab里的稀疏带状矩阵创建命令 SM=spdiags(B,d,m,n)
产生稀疏存储矩阵
sparse可以讲完全存储方式转换为稀疏存储方式,那么,当使用稀疏矩阵时,要先产生完全存储方式的矩阵,然后再转换,这显然是不可取的,MATLAB有自己产生稀疏矩阵的函数spconvert:
B=spconvert(A);A为一个m*3或m*4的矩阵,A的每一列的意义分别为:
(i,1)第i非零元素所在行
(i,2)第i非零元素所在列
(i,3)第i非零元素的实部
(i,4)第i非零元素的虚部
3.带状(对角)稀疏矩阵
函数 spdiags
格式 [B,d] = spdiags(A) %从矩阵A中提取所有非零对角元素,这些元素保存在矩阵B中,向量d表示非零元素的对角线位置。
B = spdiags(A,d) %从空岩槐A中提取由d指定的对角线元素,并存放在B中。
A = spdiags(B,d,A) %用B中的列替换A中由d指定的对角线元素,输出稀疏枣禅矩阵。
A = spdiags(B,d,m,n) %产斗友生一个m×n稀疏矩阵A,其元素是B中的列元素放
在由d指定的对角线位置上。
例1
>>A = [11 0 13 0
0 22 0 24
0 0 33 0
41 0 0 44
0 52 0 0
0 0 63 0
0 0 0 74];
>>[B,d] = spdiags(A)
B =
41 11 0
52 22 0
63 33 13
74 44 24
d =
-3 %表示B的第1列元素在A中主对角线下方第3条对角线上
0 %表示B的第2列在A的主对角线上
2 %表示B的第3列在A的主对角线上方第2条对角线上
例1
>> B=[1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16];
>> d=[-2 0 1 3];
>> A=spdiags(B,d,4,4);
>> full(A)
ans =
2 7 0 16
0 6 11 0
1 0 10 15
0 5 0 14
㈤ 稀疏矩阵的存储空间
一个稀疏矩阵中有许多元素等于零,这便于矩阵的计算和保存.如果Matlab把一个矩阵当作稀疏矩阵,那么只需在m×3的矩阵中存储m个非零项.第1列是行下标,第2列是列下标,第3列是非零元素值,不必保存零元素.如果存储一个浮点数要8个字节,存储每个下标要4个字节,那么整个矩阵在内存中存储需要1 6×m个字节.
A = e y e ( 1 0 0 0 ) ;
得到一个1 0 0 0×1 0 0 0的单位矩阵,存储它需要8 MB空间.如果使用命令:
B = s p e y e ( 1 0 0 0 ) ;
用一个1 0 0 0×3的矩阵来代表,每行包含有一个行下标,列下标和元素本身.只需1 6 K B的空间就可以存储1 0 0 0×1 0 0 0的单位矩阵,它只需要满单位矩阵的0 . 2 %存储空间.对于许多的广义矩阵也可这样来作.
㈥ MATLAB如何导入大型稀疏矩阵
方法一:把你的知扮弊m文件和xls文件放在同一目录下,路径不要有中文。如
数据文件为dat.xls。m文件如下:
data=xlsread('缺让dat.xls');
方法二:数据文件与m文件不在同一目录,要写明数据文件路搭族径;
如:data=xlsread('c:\dat.xls')