2012-01-23 16 views
6

मैंने ऑक्टेव में एक सेल सरणी बनाई। कुछ कॉलम में फ्लोट होते हैं, और कुछ कॉलम में स्ट्रिंग होती है। मैं तार के एक स्तंभ से सेल सरणी सॉर्ट करने के लिए कर रहा हूँ (कहते हैं कि col # 4), इस आदेश का उपयोग:फ़्लोट के कॉलम द्वारा ऑक्टेव में सेल सरणी को सॉर्ट करने के लिए कैसे करें?

sortrows (mycellarray, 4); 

लेकिन अगर स्तंभ मैं द्वारा क्रमबद्ध करना चाहते है के एक स्तंभ तैरता, तो मुझे यह त्रुटि संदेश मिलता है:

error: sort: only cell arrays of character strings may be sorted 

क्या किसी को फ्लोट के कॉलम द्वारा सेल सरणी को सॉर्ट करने का तरीका पता है?

उत्तर

6

कॉलम को फ्लोट वैल्यू के साथ वेक्टर में कनवर्ट करें, इसे सॉर्ट करें और सॉर्टिंग इंडेक्स प्राप्त करें। फिर आप इस इंडेक्स को अपने सेल सरणी पर लागू कर सकते हैं।

mycellarray = {'a',1,0.5; 'b',2,0.1; 'c',3,4.5; 'd',4,-3.2}; 
vector2sort=cell2mat(mycellarray(:,3)); 
[~,idx] = sort(vector2sort) 
mycellarraysorted = mycellarray(idx,:); 

सप्टक के कुछ संस्करणों में, हालांकि, टिल्ड ~ ऑपरेटर परिभाषित नहीं है। उस स्थिति में:

vector2sort = mycellarray(:,3); 
[dummy,idx] = sort(vector2sort); 
mycellarraysorted = mycellarray(idx,:); 
संबंधित मुद्दे

 संबंधित मुद्दे