2009-11-23 14 views
24

पर एक निम्न-पास या उच्च-पास फ़िल्टर लागू करें MATLAB में किसी सरणी में निम्न-पास या उच्च-पास फ़िल्टर लागू करने का कोई आसान तरीका है? मैं MATLABs शक्ति (या गणित की जटिलता) से थोड़ा अभिभूत हूं और मुझे एक आसान फ़ंक्शन या कुछ मार्गदर्शन की आवश्यकता है क्योंकि मैं इसे दस्तावेज़ से बाहर नहीं ढूंढ सकता या वेब पर खोज नहीं कर सकता था।MATLAB: एक सरणी

उत्तर

31

सुनिश्चित करें, filter फ़ंक्शन देखें।

तुम सिर्फ एक 1-पोल कम पास फिल्टर की जरूरत है, यह

xfilt = filter(a, [1 a-1], x); 

जहां एक = टी/τ, टी नमूने के बीच का समय =, और τ (ताऊ) है फिल्टर समय स्थिर है।

xfilt = filter([1-a a-1],[1 a-1], x); 

आप एक फिल्टर डिजाइन, और सिग्नल प्रोसेसिंग उपकरण बॉक्स के लिए एक लाइसेंस की आवश्यकता है, तो वहाँ a bunch of functions, fvtool और fdatool को देखो:

यहाँ इसी उच्च पास फ़िल्टर है।

+0

मुझे पता था कि यह इतना आसान होगा। आपका बहुत बहुत धन्यवाद! – Christian

2

आप butter() फ़ंक्शन का उपयोग करके रनटाइम में एक लोपास बटरवर्थ फ़िल्टर डिज़ाइन कर सकते हैं, और उसके बाद सिग्नल पर लागू कर सकते हैं।

fc = 300; % Cut off frequency 
fs = 1000; % Sampling rate 

[b,a] = butter(6,fc/(fs/2)); % Butterworth filter of order 6 
x = filter(b,a,signal); % Will be the filtered signal 

इस विधि के साथ हाईपास और बैंडपास फ़िल्टर भी संभव हैं। https://www.mathworks.com/help/signal/ref/butter.html

+0

चेतावनी। इसके लिए सिग्नल प्रोसेसिंग टूलबॉक्स की आवश्यकता है। – rayryeng