MATLAB Function Reference |
Syntax
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)
Description
S = sparse(A)
去除完全矩陣裡值為零的元素而轉成稀疏矩陣的型式。若 S
已經是稀疏矩陣,則 sparse(S)
結果還是為 S
。
S = sparse(i,j,s,m,n,nzmax)
用 i
, j
, s
等向量來產生可存放 nzmax
個非零元素的 m-by-n
稀疏矩陣。在 s
中零元素及其相對應的 i
及 j
會被忽略。向量 i
, j
, s
長度均相等。任何 s
中相同 i
, j
值的元素會相加起來。
為了簡單化這六個參數的函數呼叫,參數 s
及參數 i
, j
其中之一可傳遞純數。在這樣的情況,i
, j
, s
被擴張成相同的長度。
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-by-n
的矩陣。
Remarks
MATLAB 中內建的數學,邏輯,索引等函數可用於稀疏矩陣或是稀疏矩陣與完全矩陣混合後的矩陣。這些函數若用在稀疏矩陣,則回傳的矩陣還是稀疏矩陣;若用在完全矩陣,則回傳的矩陣還是完全矩陣。
在大多數的情況,函數用於稀疏矩陣與完全矩陣混合的矩陣會回傳完全矩陣。例外的情況發生在混合函數的結果在結構上是稀疏的,例如: A.
*S
至少和 S
的稀疏程度一樣。
Examples
S
=
sparse(1:n,1:n,1)
產生 n-by-n
單位矩陣的稀疏表示法。S
=
sparse(eye(n,n))
也可產生相同的結果,但此做法會在過程中暫時地產生一個大多數元素為零的 n
-by-n
完全矩陣。
B
=
sparse(10000,10000,pi)
可能很不實用,但它是合法且行得通的。它建立一個只有一個非零元素的 10000
-by-10000
矩陣。千萬別試 full(B)
,這樣可是會需要 800 MB的容量的。
[i,
j,
s] = find(S); [m,
n] = size(S); S = sparse(i,
j,
s,
m,
n);
[i,
j,
s] = find(S); S = sparse(i,
j,
s);
See Also
sparfun
目錄,以及:diag
產生對角矩陣與矩陣的對角線元素
find
尋找非零元素的索引及值
full
將稀疏矩陣轉換成完全矩陣
nnz
矩陣中非零元素的個數
nonzeros
矩陣中的非零元素
nzmax
可分配給矩陣中非零元素的最大數目
spones
將稀疏矩陣中非零元素置換成 1
sprandn
產生正規分布(normally distributed)的亂數稀疏矩陣
sprandsym
產生對稱的亂數稀疏矩陣
spy
觀看稀疏矩陣的非零元素分布情況
spalloc | spaugment |