MATLAB

2017-11-28 22 views
5

में सरणी तत्वों की पुनरावृत्ति मेरे पास एक MATLAB सरणी है और सरणी तत्वों की संख्या के आधार पर पुनरावृत्ति करना चाहते हैं। नीचे उदाहरण है कि मैं चाहता हूँ।MATLAB

a = [2, 4, 6, 8] 

अगर मैं 7 तत्वों चाहते हैं, परिणाम

aa = [2, 4, 6, 8, 2, 4, 6] 

है या अगर मैं 5 तत्वों, चाहते

aa = [2, 4, 6, 8, 2] 

कोई MATLAB समारोह जो परिणाम इस तरह बना देता है है?

+0

पर [repmat] एक नजर डालें (https://ch.mathworks.com/help/matlab/ref/repmat.html) फ़ंक्शन। मुझे यकीन नहीं है लेकिन यह आपकी मदद कर सकता है। :) –

+0

@ वीएल। टिप्पणी के लिए धन्यवाद! मैंने अभी repmat की जांच की लेकिन ऐसा लगता है कि पुनरावृत्ति के केवल पूर्णांक समय उपलब्ध हैं। –

उत्तर

3

एक आसान विकल्प है कि के लिए एक अस्थायी चर का उपयोग करने के लिए किया जाएगा:

a = [2 4 6 8]; 
k = 7; 
tmp = repmat(a,1,ceil(k/numel(a))); 
aa = tmp(1:k) 

सबसे पहले, आप वेक्टर छोटी से छोटी पूर्णांक है कि परिणाम k से भी बड़ा बना देता है का उपयोग कर दोहराए जाते हैं, और फिर आप अतिरिक्त तत्वों को हटा दें।

आपको लगता है कि कई बार आपको लगता है कि ऐसा करने के लिए एक छोटा सा सहायक समारोह लिख सकते हैं करते हैं:

function out = semi_repmat(arr,k) 
tmp = repmat(arr,1,ceil(k/numel(arr))); 
out = tmp(1:k); 
end 
+1

हां। आपकी टिप्पणी के रूप में, मैं सबसे छोटे पूर्णांक (फर्श फ़ंक्शन के साथ) का उपयोग करके वेक्टर दोहराता हूं और आकार को कम करता हूं। टिप्पणी के लिए धन्यवाद! –

6

आप "मॉड्यूलर अनुक्रमण" का उपयोग कर सकते हैं:

a = [2, 4, 6, 8]; % data vector 
n = 7; % desired number of elements 
aa = a(mod(0:n-1, numel(a))+1);