(translator=Erison, ChineseSource=Erison-20020713-6\sparse.html, EnglishSource=c:\matlabr12\help\techdoc\ref\sparse.html)
MATLAB Function Reference    
sparse

建立稀疏矩陣

Syntax

Description

sparse 函數產生 Matlab 稀疏儲存架構的矩陣。

S = sparse(A) 去除完全矩陣裡值為零的元素而轉成稀疏矩陣的型式。若 S 已經是稀疏矩陣,則 sparse(S) 結果還是為 S

S = sparse(i,j,s,m,n,nzmax) i, j, s 等向量來產生可存放 nzmax 個非零元素的 m-by-n 稀疏矩陣。在 s 中零元素及其相對應的 ij 會被忽略。向量 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的容量的。

下面指令可找出 S 非零元素而重組成一個稀疏矩陣:

若最後一列及最後一行有非零元素,則下面指令有同樣的效果:

See Also


 spalloc spaugment