2013-11-04 64 views
1

我需要一個命令來檢查零稀疏矩陣,isempty(..)不起作用。是否有一些isempty(..)的稀疏版本?Matlab:檢查零稀疏矩陣的命令?

>> mlf2=sparse([],[],[],2^31+1,1) 

mlf2 = 

    All zero sparse: 2147483649-by-1 

>> isempty(mlf2) 

ans = 

    0  % I waited for 1 here with the zero sparse matrix... 
+3

請注意,它不是稀疏問題。 'isempty(0)'也會評估爲'false',因爲零不是空的。通常你可以使用'any'或'nnz'來確定是否有非標記。 –

+1

'nnz','nonzeros','nzmax'等都在['sparse'文檔頁面]的另請參見部分(http://www.mathworks.com/help/matlab/ref/sparse。 HTML)。有幾個有用的伴侶功能。值得一看IMO。 – chappjc

回答

6

嘗試

~nnz(mlf2) 

isempty(find(mlf2)) 

編輯:

穆赫辛Nosratinia指出,isempty(find(mlf2), 1)更有效,因爲它的find命令或者返回A M長度爲1的矩陣或空矩陣

+0

我覺得〜nnz(mlf2)會這樣做,謝謝! +1 – hhh

+0

沒問題,很高興它的作品:) –

+1

+1一個很好的答案。對於第二種解決方案,'isempty(find(mlf2,1))'似乎更有效率。 –