函式簡介
函式功能:在MATLAB中,該函式用於把一個稀疏矩陣(sparse matrix)轉換成一個全矩陣(full matrix)(關於sparse matrix和full matrix請參閱sparse)。在matlab中, meshgrid函式的原始碼調用了該函式。在MATLAB命令視窗中鍵入doc full或help full可以獲得該函式的幫助信息。
語法格式:
A = full(S)
把稀疏矩陣S轉換成全矩陣。如果S是一個全矩陣,S將原封不動地被返回。如果A是一個全陣,issparse(A)為0。假設x是一個m乘以n的矩陣,其中包含nz = nnz(x)個非零項。那么,如果以全矩陣方式存儲x,即full(x),需要占用m*n個實數大小的記憶體空間;而sparse以稀疏矩陣形式存儲,即sparse(x),需要記憶體空間來存儲nz個實數和nz+n個整數。在大多數計算機上,一個實數占用的記憶體空間為一個整數的兩倍。在這些電腦上,如果比值nnz/prod(size(x))不超過三分之一,以稀疏矩陣形式存儲一個矩陣所占用的存儲空間要遠遠少於以全矩陣形式存儲。然而,針對稀疏矩陣的運算過程要(比針對全矩陣的運算)花費更長的時間。所以,在使用稀疏矩陣形式存儲一個矩陣時,這個比值最好不超過三分之二。
相關函式:meshgrid、issparse、sparse
程式示例
A = [0, 0, 0; 0, 1, 0; 1, 0, 0];
S = sparse(A)
A = full(S)
輸出結果:
>> A = [0, 0, 0; 0, 1, 0; 1, 0, 0];
S = sparse(A)
A = full(S)
S =
(3,1) 1
(2,2) 1
A =
0 0 0
0 1 0
1 0 0
由此可以看出,所謂稀疏矩陣存儲形式,全矩陣存儲形式,只是matlab中存儲稀疏矩陣的兩種不同的方式。前一種存儲方式,只存儲係數矩陣中的非零項的值和它在矩陣中的行列下標,而以全矩陣形式存儲,則所有0也單獨存儲。