MATLAB इनलाइन फ़ंक्शन त्रुटि

मैं इस सरल MATLAB दिनचर्या चलाने की कोशिश कर रहा हूँ। जो एक खिड़की समारोह साजिश करेगा।

M = 26;
n = [0:(M-1)];
om = linspace(-pi, pi, 201); % for displaying frequency response  
oc = pi/6; % cutoff frequency
% desired impulse response:
hd = inline('1*(abs(om) < oc)', 'om', 'oc');
stem(n, hd, 'filled')
axis([0 M-1 -0.1, 0.3]), xlabel 'n', ylabel 'h[n]'

लेकिन मुझे निम्न त्रुटि मिल रही है

??? Error using ==> inline.subsref at 14 Not enough inputs to inline function.

Error in ==> xychk at 80 if isvectorY, y = y(:); end

Error in ==> stem at 43 [msg,x,y] = xychk(args{1:nargs},'plot');

मुझे लगता है कि इनलाइन फ़ंक्शन में पर्याप्त इनपुट हैं। लेकिन त्रुटि कहते हैं नहीं। किसी भी सहायता की सराहना की जाएगी।

संपादित करें # 1

इसलिए मैंने अज्ञात फ़ंक्शन का उपयोग करने का तरीका सीखा और आशा है कि इसे सही तरीके से उपयोग किया जाए लेकिन अब मुझे एक और छोटी त्रुटि है। यहां संपादित कोड है।

 M = 26;
n = [0:(M-1)];
om = linspace(-pi, pi, 201); % for displaying frequency response  
oc = pi/6; % cutoff frequency
% desired impulse response:
hd = @(om,oc) 1*abs(om) < oc;
hn = hd(om,oc);
stem(n, hn, 'filled')
axis([0 M-1 -0.1, 0.3]), xlabel 'n', ylabel 'h[n]'

मुझे लगता है कि एक्स एक्स स्टेम में वाई के समान होना चाहिए। मुझे बात समझ आ गई। लेकिन मैं समझ नहीं पा रहा हूं कि बराबर लंबाई के एन और एचएन कैसे बनाना है। n -pi से + pi मुझे यकीन है। लेकिन एचपी भी -पी से + पीआई तक नहीं है। क्या आप यह भी बता सकते हैं कि इसे -पी से पीआई में कैसे बनाया जाए यदि यह पहले से नहीं है।

0
@horchler .... मैंने अब अज्ञात फ़ंक्शन का उपयोग किया है। लेकिन मुझे एक और समस्या है। मैंने उस समस्या के बारे में संपादन 1 जोड़ा है। मुझे खेद है कि मैं matlab में कुशल नहीं हूँ इसलिए किसी भी मदद की सराहना की जाएगी।
जोड़ा लेखक urwaCFC, स्रोत
@horchler ... मैं भी इस दौरान fir1 भर गया है .. लेकिन मैं समझ नहीं सकता अगर मैं इसे एक आयताकार खिड़की के लिए उपयोग कर सकते हैं या केवल हमिंग खिड़की के लिए fir1 है।
जोड़ा लेखक urwaCFC, स्रोत
R2013a में inline के लिए सहायता से सीधे: " inline को भविष्य में रिलीज़ में हटा दिया जाएगा। इसके बजाय अनाम कार्य का उपयोग करें।" इनलाइन फ़ंक्शंस अब कई सालों से काफी निष्क्रिय हैं। आपको वास्तव में अज्ञात फ़ंक्शंस का उपयोग कैसे करना है सीखना चाहिए, जो कि हैं अधिक शक्तिशाली और तेज़।
जोड़ा लेखक horchler, स्रोत
या तो om = linspace (-pi, pi, m); या एम = 201; में बदलें ताकि n और om की लंबाई समान होगी। मेरा अनुमान है कि आप वास्तव में om (hn) प्लॉट करने के लिए खाएंगे hn बस बूलियन है। fir1 के बारे में कोई जानकारी नहीं - जो एक अलग प्रश्न के विषय की तरह लगता है।
जोड़ा लेखक horchler, स्रोत

1 उत्तर

यहां मुद्दा यह है कि oem और om के मान को stem का मान नहीं पता है जब यह आपके इनलाइन फ़ंक्शन से वाई-मान प्राप्त करने का प्रयास करता है।

आम तौर पर, इनलाइनों के बजाय अनाम कार्यों का उपयोग करना बेहतर होता है (क्योंकि भविष्य में इनलाइनों को अप्रचलित कर दिया जाएगा):

hd = @(x,y) 1*abs(x)

@ (...) भाग परिभाषित करता है कि फ़ंक्शन कितने इनपुट लेता है; राज्यों के बाद दो इनपुट के कार्य के बाद हिस्सा। ध्यान दें कि आपके पास फ़ंक्शन परिभाषा में अतिरिक्त चर दिखाई दे सकते हैं। अज्ञात फ़ंक्शन परिभाषित होने पर उनके मान तय किए जाते हैं।

आउटपुट एक फ़ंक्शन जैसा है उदा। <�कोड> पाप , और इसे इस तरह कहा जा सकता है।

3
जोड़ा
@Dan: हाँ, stem यह नहीं जानता कि oc और om का क्या मान है। मैं इसे अपने उत्तर में जोड़ना भूल गया।
जोड़ा लेखक Jonas, स्रोत
@ user128806 इसे अनाम फ़ंक्शन की तरह उपयोग करें। मेरा संपादन देखें।
जोड़ा लेखक Jonas, स्रोत
@ user128806: आपको यह सुनिश्चित करने की आवश्यकता है कि n और hn में तत्वों की संख्या समान है। समाधान के लिए @ हॉर्चर की टिप्पणी देखें। साथ ही, फ़िल्टर के लिए एक अलग सवाल पूछें, शायद dsp.stackexchange.com पर
जोड़ा लेखक Jonas, स्रोत
लेकिन मैं इनलाइन का उपयोग करना चाहता हूं। मैं उस कोड में क्या गलत कर रहा हूं ... मुझे अभी भी यह नहीं मिला है: /
जोड़ा लेखक urwaCFC, स्रोत
@ जोनास .. हाँ मैंने अब अज्ञात फ़ंक्शन का उपयोग किया है। लेकिन मुझे एक और समस्या है (संपादन में जोड़ा गया है) .. क्या आप इसके साथ मदद कर सकते हैं। मैं एक matlab बहुत अच्छा नहीं हूँ।
जोड़ा लेखक urwaCFC, स्रोत
मैं भी इस दौरान fir1 भर गया है .. लेकिन मैं समझ नहीं सकता अगर मैं इसे आयताकार खिड़की के लिए उपयोग कर सकता हूं या केवल हमिंग खिड़की के लिए fir1 है। -
जोड़ा लेखक urwaCFC, स्रोत
किसी भी तरह से - मुझे लगता है कि मुद्दा यह है कि hd में stem लाइन में कोई तर्क पारित नहीं हुआ था, जहां इसमें 2 इनपुट के विपरीत शून्य इनपुट था।
जोड़ा लेखक Dan, स्रोत