sparse函數算法
功能:Create sparse matrix-建立稀疏矩陣函數
用法1:S=sparse(X)——將矩陣X轉化爲稀疏矩陣的形式,即矩陣X中任何零元素去除,非零元素及其下標(索引)組成矩陣S。 若是X自己是稀疏的,sparse(X)返回S。spa
例如:.net
A=
0 2 0
4 0 6
7 0 0blog
B=sparse(A)=索引
(2,1) 4
(3,1) 7
(1,2) 2
(2,3) 6內存
用法2:S = sparse(i,j,s,m,n,nzmax)——由i,j,s三個向量建立一個m*n的稀疏矩陣(上面的B矩陣形式),而且最多含有nzmax個元素。文檔
例如:io
B=sparse([1,2,3],[1,2,3],[0,1,2],4,4,4)class
B =
(2,2) 1
(3,3) 2
其中i=[1,2,3],稀疏矩陣的行位置;j=[1,2,3],稀疏矩陣的列位置;s=[0,1,2],稀疏矩陣元素值。 其位置爲一一對應。
m=4(>=max(i)),n=4(>=max(j)) (注:m和n的值能夠在知足條件的範圍內任意選取),用於限定稀疏的大小。
nzmax=4(>=max(i or j)),稀疏矩陣最多能夠有nzmax個元素。
一些簡寫的狀況:
S = sparse(i,j,s,m,n)——nzmax = length(S) ;
S = sparse(i,j,s)——使m = max(i) 和 n = max(j),在S中零元素被移除前計算最大值,[i j s]中其中一行可能爲[m n 0];
S = sparse(m,n)——sparse([],[],[],m,n,0)的縮寫,生成一個m*n的全部元素都是0的稀疏矩陣。
full函數
功能:把稀疏矩陣轉爲全矩陣
A=full(X)——把稀疏矩陣X轉換爲全矩陣存儲形式A。
matlab sparse matrix和full matrix
其實這只是matlab中存儲稀疏矩陣的兩種方法。
MATLAB函數sparse簡介
函數功能:
這個函數與稀疏矩陣有關。
先說MATLAB中兩個概念:full storage organization(對應於full matrix)和sparse storage organization(對應於sparse matrix)。
而要說明這兩個概念,須要介紹稀疏矩陣的概念。
通常意義上的稀疏矩陣,就是看起來很鬆散的,也就是說,在這個矩陣中,絕大多數元素是零。例如:
0, 0, 0, 0;
0, 0, 1, 0;
0, 0, 0, 0;
0, 1, 0, 2;
計算機存儲稀疏矩陣能夠有兩種思路:
1.按照存儲一個普通矩陣同樣存儲一個稀疏矩陣,好比上面這個稀疏矩陣中總共十六個元素(三個非零元素),把這些元素所有放入存儲空間中。這種存儲方式,在matlab就叫作full storage organization。
2.只存儲非零元素,那麼怎麼存儲呢?
(4,2) 1
(2,3) 1
(4,4) 2
看出來了吧, 只存儲非零元素在稀疏矩陣中的位置和值。好比,上面所舉的這個例子,值爲2的項在第4行第4列,那麼咱們就只須要存儲這一非零項在稀疏矩陣中的「座標」(4,4)和這一非零項的值2。在MATLAB中,這種存儲方式就叫作sparse storage organization。雖然,這樣要多存儲一組座標,但若是稀疏矩陣中非零元素很是少,以這種存儲方式存儲稀疏矩陣反而節省了內存空間。
爲何matlab中會同時存在這兩種存儲方式呢?
第一種方式, 更加直觀,進行矩陣運算時(好比稀疏矩陣的乘法),算法簡單易實現。
而第二種方式,雖然有時能夠節省存儲數據時佔用的存儲空間,但進行運算時須要專門的算法實現(使用C語言編寫過稀疏矩陣乘法的同窗應該能體會到)。
sparse函數的功能就是把以第一種存儲形式存儲的稀疏矩陣轉換成第二種形式存儲(其實這個函數更重要的功能是構建稀疏矩陣,這裏再也不討論)。對應的函數爲full,即把以第二種方式存儲的稀疏矩陣轉換成第一種方式存儲。
在MATLAB中,存儲一個稀疏矩陣有兩種方法。
語法格式:
S = sparse(A)
S = sparse(i,j,s,m,n,nzmax)
S = sparse(i,j,s,m,n)
S = sparse(i,j,s)
S = sparse(m,n)
各類語法格式詳見MATLAB幫助文檔。
相關函數:full、issparse
程序示例
>> A = [0, 0, 0, 0;
0, 0, 1, 0;
0, 0, 0, 0;
0, 1, 0, 2];
>> sparse(A)
ans =
(4,2) 1
(2,3) 1
(4,4) 2
固然sparse函數還能夠經過必定規則構造稀疏矩陣,這裏就很少說了。
本文轉自:http://blog.csdn.net/meng4411yu/article/details/8840612