2013-12-10 6 views
5

R में, यदि हमारे पास वेक्टर और इंडेक्स की एक सूची है, तो हम इस विचार को व्यक्त कर सकते हैं कि हम एक नकारात्मक सूचकांक का उपयोग करके "इन इंडेक्स को छोड़कर सभी तत्व" चाहते हैं। ,क्या मैटलैब में आर की नकारात्मक इंडेक्सिंग के बराबर है?

data = rnorm(100) 
indices = sample(1:length(data), length(data)/2) 
training_data = data[indices] 
test_data = data[-indices] 

इस कोड के बाद sampled_datadata के सभी तत्वों जिसका सूचकांक indices में शामिल नहीं हैं शामिल हैं: विशेष रूप से, निम्नलिखित R कोड पर विचार करें। क्या मैटलैब में इसके बराबर है?

मैं सीधे पाठ्यक्रम wtih ()[] की बजाय एक ही वाक्य रचना (उपयोग करने की कोशिश, लेकिन यह सिर्फ त्रुटि

Subscript indices must either be real positive integers or logicals. 
दिया

उत्तर

8

मैटलैब नकारात्मक सूचकांक अनुमति नहीं है। आप तत्वों को दूर करने के क्या कर सकते हैं यह है :

data2 = data; 
data2(indices) = []; % remove selected elements 

लेकिन जब मशीन से सीखने वाले सामान कर रहा तार्किक अनुक्रमण का उपयोग करना पसंद:

istest = randn(length(data), 1) < 0; % random logicals: 50% 0's and 50% 1's 
istrain = ~istest; 
% Now operate on data(istest) and data(istrain). 
1

मैंने सूचकांक सरणी को लॉजिकल में परिवर्तित कर दिया (बजाय तार्किक सरणी उत्पन्न करने के बजाए), क्योंकि मैं अभी भी अन्य उद्देश्यों के लिए मूल अनुक्रमणिका चाहता था।

indices = datasample(1:length(data), length(data)/2); 
logical = false(length(data) ,1); 
logical(indices) = true; 
training_data = data(logical) 
test_data = data(~logical) 

तार्किक सरणियों पैदा करने की इस तरह से यह आसान कम से कम मेरे लिए बनाम परीक्षण उदाहरण प्रशिक्षण का प्रतिशत नियंत्रित करने के लिए, बनाता है।

हालांकि, मुझे अभी भी जेज़ का समाधान अत्यधिक शैक्षिक लगता है।

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