Obsah
MATLAB je programovací nástroj, ktorý možno použiť na detailnú analýzu a spracovanie signálov. Bežnou operáciou spracovania signálov v jednej alebo viacerých dimenziách je odstránenie vysokofrekvenčného šumu. Nízkopriepustný filter je podľa definície určený na odstránenie frekvencií nad určitú hodnotu zo signálu. Použitie funkcie filter2 () v MATLABe je jedným zo spôsobov implementácie takéhoto filtra.
inštrukcia
Funkcia MATLAB filter2 () umožňuje implementovať nízkopriepustný filter (Hemera Technologies / AbleStock.com / Getty Images)-
Importujte svoje údaje do programu MATLAB. Často sa signály, ktoré je potrebné filtrovať, ukladajú v binárnom formáte, čo vyžaduje importovanie nízkoúrovňovej funkcie I / O, ako napríklad fread (). MATLAB však zahŕňa dovozcov obrázkov pre najbežnejšie formáty.
my_data = fread (file_handle, n_samples, data_type); my_image = imread ('my_image_file.tif', 'TIFF');
-
Pred spracovaním údajov s funkciou filter2 () skonvertujte údaje na dvojrozmerné pole. Môžete to urobiť tak, že konvertujete jednorozmerné binárne pole na pole prostredníctvom funkcie reshape () alebo výberom obrázka zo série. Funkciu squeeze () použite na odstránenie dimenzií singleton výberom časti poľa s viac ako dvoma rozmermi.
my_image = pretvoriť (my_data, šírka, výška); my_other_image = squeeze (my_image_series (:,: image_number));
-
Nakreslite si filter a uložte výsledok do dvojrozmerného poľa H. Vo všeobecnosti platí, že nízkopriepustný filter používa "gaussovo okno", ktoré možno vytvoriť pomocou funkcie fspecial (). Filtre môžu byť navrhnuté aj so špeciálnou funkciou spracovania sptool signálu (). Frekvenčnú odozvu okna filtra môžete zobraziť pomocou funkcie wvtool (). V príklade kódu je H pole 24x24, ktoré obsahuje Gaussovo okno 10 štandardnej odchýlky.
H = fspecial ('gaussian', [24 24], 10); wvtool (H);
-
Vykonajte filtrovanie pomocou dvojrozmerného konvolučného algoritmu implementovaného cez filter2 (). V predvolenom nastavení má výsledok filter2 () rovnaké rozmery ako vstupný súbor údajov.
my_filtered_data = filter2 (my_data, H);