2010-02-01 6 views
5

शायद एक बहुत ही आसान सवाल है, लेकिन मैं पहले से ही उत्तर के लिए इंटरनेट पर घंटों की तलाश कर रहा हूं लेकिन मुझे यह नहीं मिल रहा है।मैट्रिक्स फ़ंक्शन के आउटपुट के रूप में

मैंने नीचे दिया गया कार्य बनाया है। एक और एम-फाइल में मैं मैट्रिक्स 'actual_location' का उपयोग करना चाहता हूं। हालांकि, मैट्रिक्स के एक व्यक्तिगत सेल का उपयोग करना संभव नहीं है (यानी वास्तविक_ स्थान (3,45) या वास्तविक_स्थान (1,2))। जब मैं किसी व्यक्तिगत सेल का उपयोग करने का प्रयास करता हूं, तो मुझे निम्न त्रुटि मिलती है: ??? Error using ==> Actual_Location Too many input arguments.

क्या कोई मुझे बता सकता है कि मुझे क्या बदलना है, ताकि मैं मैट्रिक्स की अलग-अलग कोशिकाओं को पढ़ सकूं?

function [actual_location] = Actual_Location(~); 
actual_location=zeros(11,161); 
for b=1:11 
    for t=1:161 
     actual_location(b,t) = (59/50)*(t-2-(b-1)*12)+1; 
     if actual_location(b,t) < 1 
      actual_location(b,t) =1; 
     end  
    end 
    actual_location(1,1) 
end 
+0

आप वास्तविक_लोकेशन का उपयोग कैसे कर रहे हैं? –

+0

मैं कुछ आसान गणनाओं के लिए किसी अन्य एम-फाइल में वास्तविक_लोकेशन का उपयोग कर रहा हूं। (जोड़ों और घटकों) मैं इसे अन्य एम-फाइल में निम्नलिखित कोड के साथ खोलता हूं: 'वास्तविक_स्थान ' – Daan

उत्तर

1

आप इसे परिभाषित किया है के रूप में, मैट्रिक्स अपने कार्य Actual_Location द्वारा लिखित के लिए एम-फ़ाइल में नाम actual_location है। हालांकि, जब आप अपना फ़ंक्शन कॉल करते हैं तो आप आउटपुट को अपना पसंदीदा नाम दे सकते हैं। मुझे लगता है कि आप इसे इस तरह बुला रहे हैं, याद है मैटलैब है कि एक सा केस-संवेदी:

actual_location = Actual_Location(arguments); 

तुम बस अपने आप को भ्रमित करने के लिए लिख रहे हैं। समारोह परिभाषा डमी तर्क के लिए actual_location अलावा किसी अन्य नाम का उपयोग करें, और कुछ इस तरह एक अधिक विशिष्ट नाम के साथ एक चर पर लौटने के लिए, फ़ंक्शन को कॉल करें:

output = Actual_Location(arguments); 

ऐसा लगता है कि आप actual_location उम्मीद की जा सकती है (1,1) एक सरणी के तत्व 1,1 को वापस करने के लिए, जबकि यह संभवतः 2 इनपुट तर्कों के साथ एक फ़ंक्शन कॉल है।

+0

मैटलैब फ़ंक्शंस के नामों के संबंध में केस-संवेदी नहीं है। इस प्रकार यदि किसी के पास 'फूबर' नामक एक फ़ंक्शन है, तो कोई इसे 'fooBaR' या' FOOBAr' 'के रूप में भी कॉल कर सकता है, एक बार जब कोई फ़ंक्शन कहलाता है, तो' Actual_Location' 'कहलाता है, matlab दुभाषिया 'actual_location (.. ।) 'उस समारोह के लिए कॉल के रूप में, जिसके परिणामस्वरूप नर्गिन त्रुटि होती है। मैट्रिक्स इंडेक्सिंग के लिए '()' का उपयोग करने के लिए एम/डब्ल्यू पर शर्म की बात है। – shabbychef

+2

मैटलैब केस-संवेदी प्रकार है। यह पहले एक सटीक मैच की तलाश करेगा, और उसके बाद अतुलनीय मैचों की जांच करेगा (अब के लिए चेतावनी फेंक रहा है, लेकिन भविष्य में रिलीज में एक त्रुटि)। इसके अलावा,() मैट्रिक्स इंडेक्सिंग के लिए संगत है, क्योंकि मैट्रिक्स तक पहुंच एक फ़ंक्शन (subsref, subsasgn) को कॉल कर रही है जिसे अधिभारित किया जा सकता है। – Jonas

1

ऐसा लगता है कि आप Actual_Location फ़ंक्शन को कई तर्कों के साथ बुला रहे हैं ... मैं उचित इंडेंटेशन के साथ अपना कोड दोबारा लिख ​​रहा हूं।

function [actual_location] = Actual_Location() 
    actual_location=zeros(11,161); 
    for b=1:11 
    for t=1:161 
     actual_location(b,t) = (59/50)*(t-2-(b-1)*12)+1; 
     if actual_location(b,t) < 1 
     actual_location(b,t) = 1; 
     end 
    end 
    actual_location(1,1) 
    end