| 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 | ![]() |