2016-06-27 58 views
0

我有一個matlab中有三行的數據集。現在要刪除其中所有三個列0,我寫了下面的代碼行:使用matlab刪除數據集中有共同零的行?

未定義功能「任意」的輸入參數:

data = my matlab datasets; 
data(~any(data,2), :) = []; 

運行此我得到下面的錯誤後type'dataset'

你能幫我解決我犯的錯嗎? 在此先感謝

這是下面的數據集:

0 7.0103  2.999808 

0 7.384439 2.953712 

0 6.80119 2.897427 

0  0   0 

0  0   0 

enter image description here

+0

Mybe你的'dataset'是不同於Matlab矩陣類型的類的對象嗎? – Vahid

+0

這個問題似乎是因爲你正在使用'dataset'類型而不是雙精度矩陣。您需要發佈實際的MATLAB語法來創建數據集,而不僅僅是一些數字。另外,我假設你的意思是你想要刪除所有三個*列都是'0'的行? – Dan

+0

我有一個大的訪問文件中的數據,我轉換成使用sql的數據集,並從那個數據集我想刪除行,其中所有列都是零.....我更新了我的數據集的屏幕截圖請看看 –

回答

0

'數據集' 似乎是一箇舊版本表。你應該考慮永久性地改變這個類型,因爲'table'提供了你需要的和'dataset'不能提供的。

%transform to table 
data2=dataset2table(data); 
%your command 
data2(~any(data2,2), :) = []; 
%tranform it back to dataset if you want to but i wouldnt recommend 
data=table2dataset(data2); 
+0

謝謝你的幫助,但我也解決了這個問題,我有不同的方法。看到我的代碼如下:ds = struct2dataset(March_2009); test = double(ds(:,4:6)); test(〜any(test,2),:)= []; %刪除所有三列都是0的行, 我得到你應該得到的東西。這是一個正確的.. ?? –

+0

如果你得到正確的結果這兩種方法都很好,不同的是,我去'dataset2table'和你'雙'。如上所述,我認爲'數據集有點過時了,所以我會建議你去'表',或者你做了一個矩陣,通過'double()' – Finn

+0

謝謝我會牢記在心:) –