1. 程式人生 > >matlab中的數字濾波器

matlab中的數字濾波器

在進行數字訊號處理的時候經常需要對時間序列進行濾波。工具箱中常用的函式是filter

常見形式: y = filter(b,a,x)
其中x是輸入序列,向量b&a是濾波器的引數。y是輸出序列。
下面舉一個例子說明一下實際的計算過程。
比如要對一段語音訊號做預加重處理,其實就是要讓響應的數字序列通過一個高通濾波器。濾波器的傳遞函式模型為——H(z)=1-μ*z^(-1)。實際計算的時候可以這麼處理:y(i) = x(i) - μ*x(i-1),當index小於1的時候按照 x(index) = 0 處理。
程式碼如下:

[y fs]=audioread('anger_03a01Wa.wav'
); yy = filter([1 -0.9],1,y); yyy = zeros(length(y),1); yyy(1) = y(1); for k = 2:length(y) yyy(k) = y(k) - 0.9*y(k-1); end %yy = 5*yy; figure(1) subplot(3,1,1);plot((1:length(y)),y);title('原始');xlabel('序號');ylabel('幅值'); grid; subplot(3,1,2);plot((1:length(yy)),yy);title('呼叫濾波器函式');xlabel('序號');ylabel('幅值'
); grid; subplot(3,1,3);plot((1:length(yyy)),yyy);title('按照原理做序列運算');xlabel('序號');ylabel('幅值'); grid; di = yyy - yy;%兩個結果的差別 figure(2) plot((1:length(di)),di);title('兩個結果的計算差別');xlabel('序號');ylabel('幅值'); grid;

結果如下圖所示:
原始訊號與兩種計算方法所得到的鋁箔之後的訊號:
這裡寫圖片描述
兩種計算方法的差別(實際上是沒有差別的):
這裡寫圖片描述

相關推薦

matlab繪製數字濾波器的幅頻響應曲線

FREQZ 是計算數字濾波器的頻率響應的函式    [H,W] = FREQZ(B,A,N)  可以先呼叫freqz()函式計算系統的頻率響應,然後利用abs()和angle()函式及plot()函式,即可繪製出系統在或 範圍內的頻響曲線。In its simplest fo

matlab數字濾波器

在進行數字訊號處理的時候經常需要對時間序列進行濾波。工具箱中常用的函式是filter 常見形式: y = filter(b,a,x) 其中x是輸入序列,向量b&a是濾波器的引數。y是輸出

matlab使用不同的窗函式構造FIR數字低通濾波器

目的: 1.通過窗函式法設計FIR濾波器 2.使用窗函式法設計FIR濾波器,瞭解窗函式的形式和長度對濾波器效能的影響。 原理: 實現環境: Matlab 理想低通濾波器設計: function my_output=ideallp(wc,N)

matlab實現Gabor濾波器

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

繪製數字濾波器的頻域響應,對比C語言與MATLAB的結果

設傳遞函式H(z)H(z)H(z)的分子分母系數為: b=[0.0563 -0.0009 -0.0009 0.0563];%分子 a=[1.0000 -2.1291 1.7834 -0.5435];%分母 MATLAB程式碼 b=[

用opencv模仿matlab的fspecial()函式建立一個自定義空間高斯濾波器模板

模仿matlab裡的fspecial()函式,建立一個自定義空間高斯濾波器模板。 基本原理:二維高斯核函式的基本形式是這樣滴: 通常我們的座標都是x和y整數,要產生一個3x3的濾波器,我們要以中心為基礎取樣,這樣第一個值為(-1,-1),以後依次排序到(1,1)。這樣就可以產生一個mxn

MATLAB 】freqz 函式介紹(數字濾波器的頻率響應)

freqz Frequency response of digital filter Syntax [h,w] = freqz(b,a,n) [h,w] = freqz(d,n) [h,w] = freqz(___,n,'whole') freqz(___) [

MATLAB 】filter 函式介紹(一維數字濾波器

filter 1-D digital filter Syntax y = filter(b,a,x) y = filter(b,a,x,zi) y = filter(b,a,x,zi,dim) [y,zf] = filter(___) Description

matlab座標間隔和數字顯示更改

x=[20,22,24,26,28,30,32,34,36,38,40,42,44];y=[62.9,68.8,71.2,82.5,84.1,88.6,88.4,88.4,88.0,88.0,88.0,88.0,88.0];plot(x,y,'-r*');xlabel('Number of Gabor fea

MATLAB 】impz函式介紹(數字濾波器的脈衝響應)

這篇博文將MATLAB 幫助文件上的內容簡單的貼上,便於我寫其他博文引用,以及檢視使用。 impz Impulse response of digital filter Syntax [h,t]

FIR數字濾波器設計頻率抽樣法MATLAB模擬

1.MATLAB原始碼 M=63; Wp=0.5*pi;%所需頻率取樣點個數及通帶截止頻率 m=0:(M+1)/2; Wm=2*pi*m./(M+1);%通頻帶上的取樣點及阻帶截止頻率 mtr=fl

matlab數字濾波器

MATLAB提供了專門用於求離散系統頻響特性的函式freqz(),呼叫freqz()的格式有以下兩種:(1)[H,w]=freqz(B,A,N)(2)[H,w]=freqz(B,A,N,'whole')(1)中B和A分別為離散系統的系統函式分子、分母多項式的係數向量,返回量H

Matlab fdatool設計實現一維數字濾波器

主旨 Matlab的fdatool生成的濾波器係數與濾波器傳輸函式的A/B引數的對應關係並不直觀,本文目的在於總結出濾波器係數到傳輸函式A/B引數的轉換方法和原理。 問題描述 fdatool是Matlab提供的一個互動式數字濾波器設計工具[1]. 這個工具

matlabsize函數用法

matlab 元素 size(A)函數是用來求矩陣的大小的。比如說一個A是一個3×4的二維矩陣:1、size(A) %直接顯示出A大小輸出:ans=3 42、s=size(A)%返回一個行向量s,s的第一個元素是矩陣的行數,第二個元素是矩陣的列數輸出:s=3 43、[r,c]=size(A)%將矩陣A

C++數字和字符串的轉換

oat 不能 ring1 相關 輸出 displays tof spl 進制轉換 1、字符串數字之間的轉換(1)string --> char * string str("OK"); char * p = str.c_str();(2)char * -->

matlab】:matlab不斷的出現計算過程怎麽辦

append atl class dcl function tex ctrl + c length 由於 這個問題是會常常性出的。就是matlab中不斷的出現計算。 關於這個問題,我們須要考慮的是自己是不是寫錯了,通常會出現以下兩種可能的錯誤 1,關

Matlab特征向量間距離矩陣的並行mex程序

ng- 編譯 res threads else val article col 博文 在matlab中, 有n個向量(m維)的矩陣Mat(n, m) 要計算任兩個向量間的距離, 即距離矩陣, 可使用以下的並行算法以加速: #include <i

Matlab 隨機數字

隨機生成 per else track -a content end n) 隨機 1.隨機生成僅僅有0。1元素的矩陣(m行n列) A=round(rand(m,n)) 2.隨機生成每行有若幹個0,1元素的矩陣,比方每行僅僅有2個元素為1,其它元素為0

詳細MATLAB BP神經網絡算法的實現

12c 這樣的 rfi one 節點數 jpg exce erl mat MATLAB 中BP神經網絡算法的實現 BP神經網絡算法提供了一種普遍並且實用的方法從樣例中學習值為實數、離散值或者向量的函數,這裏就簡單介紹一下如何用MATLAB編程實現該算法。

記錄在學習ML過程,在MATLAB集成LibSVM時遇到的問題

matlab     libsvm   mingw64(gcc)   前幾天寫了一下自己對SVM中關鍵的距離問題的理解,後面會繼續記錄自己對該模型其他問題的理解,今天想試試SVM在“西瓜書”那個“阿爾法3.0”數據集上的效果。於是查到了“灣灣”教授林智仁先生大