सवाल Matlab में एक कॉलम वेक्टर पर फिर से कैसे करें? [डुप्लिकेट]


संभावित डुप्लिकेट:
MATLAB में एन-आयामी मैट्रिक्स में प्रत्येक तत्व के माध्यम से मैं फिर से कैसे सक्रिय करूं? 

मेरे पास एक कॉलम वेक्टर है list जो मैं इस तरह पुन: प्रयास करना चाहता हूं:

for elm in list
   //do something with elm

कैसे?


44
2017-08-11 18:15


मूल


मुझे यह भी पता चलेगा, "मैट्रिक्स मैटलैब पर पुनरावृत्त" शब्दों को गुगल करने से नंबर 2 परिणाम के रूप में स्टैक ओवरफ्लो लौटाता है। - James


जवाब:


Matlab में, आप सीधे सूची में तत्वों पर फिर से शुरू कर सकते हैं। यह उपयोगी हो सकता है यदि आपको यह जानने की आवश्यकता नहीं है कि आप किस तत्व पर वर्तमान में काम कर रहे हैं।

इस प्रकार आप लिख सकते हैं

for elm = list
%# do something with the element
end

ध्यान दें कि Matlab के कॉलम के माध्यम से पुनरावृत्त करता है list, तो अगर list एक एनएक्स 1 वेक्टर है, आप इसे ट्रांसफर करना चाहते हैं।


80
2017-08-11 18:36



यदि आप युक्त तत्वों के मान को बदलना चाहते हैं तो भी अच्छा नहीं है - greg121
यदि आप नहीं जानते कि सूची कॉलम या पंक्ति वेक्टर है, तो आप बदसूरत संयोजन का उपयोग कर सकते हैं (:)': for elm = list(:)'; %... ;end। मेल (:)' मेट्रिस से भी पंक्ति वैक्टर बनाएगा, इसलिए देखभाल के साथ संभाल लें। - JaBe
तुम्हारा मतलब है (:).' सही? अन्यथा आप ट्रांसपोजर ऑपरेटर के बजाय जटिल संयुग्मित ऑपरेटर का उपयोग कर रहे हैं। - Sembei Norimaki
@ सेबेबी नोरिमाकी: यदि आप जानते हैं कि आपके डेटा में जटिल संख्याएं नहीं हैं, (:)' ठीक काम करेगा - हालांकि यह उपयोग करने के लिए अच्छा अभ्यास हो सकता है (:).' परवाह किए बिना। - Jonas


for i=1:length(list)
  elm = list(i);
  //do something with elm.

29
2017-08-11 18:20





matlab में कई कार्यों के साथ, आपको बिल्कुल फिर से शुरू करने की आवश्यकता नहीं है।

उदाहरण के लिए, सूची में इसकी स्थिति से गुणा करने के लिए:

m = [1:numel(list)]';
elm = list.*m;

matlab में वेक्टरकृत एल्गोरिदम सामान्य रूप से बहुत तेजी से हैं।


5
2017-08-11 23:37





यदि आप बस प्रत्येक तत्व में एक फ़ंक्शन लागू करना चाहते हैं और परिणाम को आउटपुट सरणी में डालना चाहते हैं, तो आप इसका उपयोग कर सकते हैं arrayfun

जैसा कि अन्य ने इंगित किया है, अधिकांश परिचालनों के लिए, MATLAB में लूप से बचने के लिए सबसे अच्छा है इसके बजाय अपने कोड vectorise


2
2017-08-12 14:33