2016-02-15 10 views
6

से शून्य कॉलम और पंक्तियों को हटाएं मैं एक बड़े मैट्रिक्स से कुछ कॉलम और पंक्तियों को हटाना चाहता हूं। वे कॉलम और पंक्तियां हैं जिनमें सभी शून्य मूल्य हैं। क्या MATLAB में कोई फ़ंक्शन है जो आपके लिए तेज़ी से कर सकता है? मेरी matrices sparse हैं।एक मैट्रिक्स matlab

% To remove all zero columns from A 
ind = find(sum(A,1)==0) ; 
A(:,ind) = [] ; 

% To remove all zeros rows from A 
ind = find(sum(A,2)==0) ; 
A(ind,:) = [] ; 

यह इस के लिए कोड की एक पंक्ति के लिए अच्छा होगा के रूप में मैं काम के इस प्रकार बार-बार ऐसा कर सकते हैं: मैं इस तरह से कर रहा हूँ। धन्यवाद

+1

आपका कोड अच्छा दिखता है। यदि आपकी matrices sparse हैं तो यह तेज़ हो सकता है हालांकि जब आप गैर-शून्य तत्वों को कॉपी करते हैं (पता नहीं, केवल एक अनुमान): 'बी = ए (~ इंड, :)'। –

+0

संभावित मैप्लिकेट [मैट्रिक्स से शून्य को हटाने - स्पैस नहीं] (http://stackoverflow.com/questions/738438/removing-zeros-from-a-matrix-not-sparse) – GameOfThrows

+1

'सभी (ए, 1) का उपयोग करके 'या' सभी (ए, 2) '' योग (ए, 1) 'से तेज हो सकता है, लेकिन मैंने जांच नहीं की। – Max

उत्तर

7

कोड की एक पंक्ति होगा:

A=A(any(X,2),any(X,1)) 

तरह तुमने किया था, तो आप सीधे तार्किक वैक्टर का उपयोग कर सकते हैं सूचकांक find उपयोग करने के लिए कोई जरूरत नहीं है।

+0

लोगों ने मुझे दी गई सभी टिप्पणियों पर विचार करने के लिए मेरे प्रश्नों के लिए बस अद्भुत, सही उत्तर दिया। डैनियल आप नियम! – Yas