1. Trang chủ
  2. » Giáo án - Bài giảng

Thiết kế bộ lọc FIR sử dụng chương trình Matlab

8 852 7

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Hiện nay, có một vài công cụ dùng để thiết kế các bộ lọc, nhưng phổ biến nhất là phần mềm Matlab. Trong Matlab, ta có thể sử dụng cả: SPTool, FDATool, hoặc là các hàm của Matlab để thiết kế bộ lọc. Cách 1: Sử dụng hàm trong Matlab để thiết kế bộ lọc FIR  Hàm fir1(N,W n ,window) >> b = fir1(N,W n ,window);  b - là véctơ dòng, nó chứa (N+1) hệ số của bộ lọc FIR thông thấp pha tuyến tính bậc N với tần số cắt Wn, hệ số của bộ lọc được sắp xếp theo thứ tự như trong phương trình dưới đây:         Mnxbnxbnxbny M  ....1.. 10  W n - là tần số cắt chuẩn hóa (chuẩn hoá với π) và là một số nằm trong khoảng (0,1). Nếu tần số cắt W n , là một véctơ 2 thành phần W n =[w 1 w 2 ], thì trở thành một bộ lọc với băng thông: w 1 < w < w 2 .  N - là bậc của bộ lọc  Window - là một véctơ cột chứa (N+1) thành phần đã được chỉ rõ bởi hàm cửa sổ w(n). Nếu không có cửa sổ nào được chỉ ra, fir1 dùng cửa sổ Hamming.  Các bộ lọc thông cao, băng thông và băng chặn được thiết kế bằng việc thêm chuỗi “high” và “stop” vào trong lệnh như sau: >> b = fir1(N,W n ,’high’,window); >> b = fir1(N,W n ,’stop’,window);  Tương tự, ta có một số hàm: fir2(N,f,H,window), freqz(B,A,..), filter(B,A,X), firpm(N,F,A),… Để biết them thông tin về các hàm này, trong cửa sổ lệnh của Matlab, ví dụ, ta gõ lệnh sau: >> help firpm FIRPM Parks-McClellan optimal equiripple FIR filter design. B=FIRPM(N,F,A) returns a length N+1 linear phase (real, symmetric coefficients) FIR filter which has the best approximation to the desired frequency response described by F and A in the minimax sense. F is a vector of frequency band edges in pairs, in ascending order between 0 and 1. 1 corresponds to the Nyquist frequency or half the sampling frequency. A i Xem nội dung đầy đủ tại: https://123doc.net/document/6133558-thiet-ke-bo-loc-fir-su-dung-chuong-trinh-matlab.htm

Đỗ Thành Nam – robotden@gmail.com Thiết kế lọc FIR sử dụng chương trình Matlab Đỗ Thành Nam – Lớp TKCTHTĐKTL – K41 Học Viện Kỹ Thuật Quân Sự Email: robotden@gmail.com Hiện nay, có vài cơng cụ dùng để thiết kế lọc, phổ biến phần mềm Matlab Trong Matlab, ta sử dụng cả: SPTool, FDATool, hàm Matlab để thiết kế lọc Cách 1: Sử dụng hàm Matlab để thiết kế lọc FIR  Hàm fir1(N,Wn,window) >> b = fir1(N,Wn,window);  b - véctơ dòng, chứa (N+1) hệ số lọc FIR thơng thấp pha tuyến tính bậc N với tần số cắt Wn, hệ số lọc xếp theo thứ tự phương trình đây: yn b0 xn b1.xn  1  bM xn  M   Wn - tần số cắt chuẩn hóa (chuẩn hoá với π) số nằm khoảng (0,1) Nếu tần số cắt Wn, véctơ thành phần Wn=[w1 w2], trở thành lọc với băng thông: w1 < w < w2  N - bậc lọc  Window - véctơ cột chứa (N+1) thành phần rõ hàm cửa sổ w(n) Nếu khơng có cửa sổ ra, fir1 dùng cửa sổ Hamming  Các lọc thông cao, băng thông băng chặn thiết kế việc thêm chuỗi “high” “stop” vào lệnh sau: >> b = fir1(N,Wn,’high’,window); >> b = fir1(N,Wn,’stop’,window);  Tương tự, ta có số hàm: fir2(N,f,H,window), freqz(B,A, ), filter(B,A,X), firpm(N,F,A),… Để biết them thông tin hàm này, cửa sổ lệnh Matlab, ví dụ, ta gõ lệnh sau: >> help firpm FIRPM Parks-McClellan optimal equiripple FIR filter design B=FIRPM(N,F,A) returns a length N+1 linear phase (real, symmetric coefficients) FIR filter which has the best approximation to the desired frequency response described by F and A in the minimax sense F is a vector of frequency band edges in pairs, in ascending order between and 1 corresponds to the Nyquist frequency or half the sampling frequency A is Đỗ Thành Nam – robotden@gmail.com a real vector the same size as F which specifies the desired amplitude of the frequency response of the resultant filter B ………  Ví dụ 1: Thiết kế lọc FIR sử dụng hàm: fir1(N,Wn,window) Thiết kế lọc FIR băng thông tần số 1.6 (= 0.4*(Fs/2)) KHz 2.4 (= 0.6*(Fs/2)) KHz, tần số lấy mẫu Fs = KHz, sử dụng để lọc tín hiệu % tạo tín hiệu tổ hợp >> Fs=8e3; tần số lấy mẫu Fs=8000 (Hz) >> Ts=1/Fs; chu kỳ lấy mẫu >> Ns=512; số mẫu biểu diễn đồ thị >> t=[0:Ts:Ts*(Ns-1)]; tạo mảng thời gian chứa Ns thành phần >> f1=500; >> f2=1800; >> f3=2000; >> f4=3200; >> x1=sin(2*pi*f1*t); >> x2=sin(2*pi*f2*t); >> x3=sin(2*pi*f3*t); >> x4=sin(2*pi*f4*t); >> x=x1+x2+x3+x4; tạo tín hiệu hỗn hợp % thiết kế lọc vẽ đáp ứng biên độ đáp ứng pha lọc >> N=16; bậc lọc >> wn=[0.4 0.6]; lọc băng thông giữa: 0.4*(Fs/2) 0.6*(Fs/2) >> b=fir1(N,wn); >> b b= Columns through 0.0051 -0.0000 -0.0294 Columns through 14 0.0000 0.1107 -0.0000 -0.2193 Đỗ Thành Nam – robotden@gmail.com -0.0000 0.2710 -0.0000 -0.2193 -0.0000 0.1107 0.0000 Columns 15 through 17 -0.0294 -0.0000 0.0051 M a g n it u d e (d B ) >> a=1; lọc khơng có cực, có khơng điểm >> freqz(b,a); đáp ứng biên độ đáp ứng pha >> pause; >> figure; -5 -1 0 0.1 0.2 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 N o rm a liz e d F re q u e n c y (   d / s a m p le ) 0.9 0.9 500 -5 0 -1 0 0.3 0.4 0.5 0.6 0.7 0.8 Hình 3.1 Đáp ứng biên độ đáp ứng pha lọc % vẽ biểu đồ mơ tả tín hiệu vào tín hiệu sau qua lọc >> subplot(2,1,1); >> Npts=200; >> plot(t(1:Npts),x(1:Npts)); >> title('Bieu thoi gian dau vao va dau ra'); >> xlabel('time (s)'); >> ylabel('Dau vao'); >> y=filter(b,a,x); lọc, thu tín hiệu đầu sau lọc >> subplot(2,1,2); >> plot(t(1:Npts),y(1:Npts)); >> xlabel('time (s)'); >> ylabel('Dau ra'); Đỗ Thành Nam – robotden@gmail.com >> pause; >> figure; B ie u d o t h o i g ia n d a u va o va d a u Dau v ao -2 -4 0.005 0.01 0.005 0.01 t im e (s ) 0.015 0.02 0.025 0.015 0.02 0.025 D a u -1 -2 t im e (s ) Hình 3.2 Tín hiệu đầu vào đầu sau qua lọc % vẽ tính tốn phổ tín hiệu đầu vào tín hiệu đầu >> subplot(2,1,1); >> xfftmag=(abs(fft(x,Ns))); >> xfftmagh=xfftmag(1:length(xfftmag)/2); >> f=[1:1:length(xfftmagh)]*Fs/Ns; >> plot(f,xfftmagh); >> title('Pho dau vao va dau ra'); >> xlabel('tan so (Hz)'); >> ylabel('pho dau vao') >> subplot(2,1,2); >> yfftmag=(abs(fft(y,Ns))); >> yfftmagh=yfftmag(1:length(yfftmag)/2); >> plot(f,yfftmagh); >> xlabel('tan so (Hz)'); >> ylabel('pho dau ra'); Đỗ Thành Nam – robotden@gmail.com P ho dau vao va dau dau v ao 300 200 100 0 500 1000 1500 2000 2500 tan s o (Hz ) 3000 3500 4000 500 1000 1500 2000 2500 tan s o (Hz ) 3000 3500 4000 dau 300 200 100 Hình 3.3 Phổ tín hiệu đầu vào tín hiệu đầu sau lọc Thiết kế với cửa sổ Keisel fsamp = 8000; fcuts = [1000 1500]; mags = [1 0]; devs = [0.05 0.01]; [n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp); hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale'); freqz(hh) Cách 2: Sử dụng FDATool để thiết kế lọc FDATool công cụ hữu dụng chúng sử dụng rộng rãi để thiết kế lọc Để kích hoạt cơng cụ thiết kế này, cửa sổ lệnh Matlab, ta thực nhập lệnh sau: >> fdatool Và cửa sổ FDATool gọi sau: Đỗ Thành Nam – robotden@gmail.com Hình 3.4 Cửa sổ FDATool Từ đây, ta chọn vài loại đáp ứng (của lọc): Thông thấp (Lowpass), Thông cao (Highpass), Dải thông (Bandpass), Dải chặn (Bandstop) Bộ vi phân (Differentiator) Các đặc điểm kỹ thuật lọc thay đổi theo loại đáp ứng phương pháp thiết kế Như hình 3.4, nhập: Bậc lọc (Filter Order), Các tùy chọn (Options), Đặc tính tần số (Frequency Specifications), Đặc tính biên độ ( Magnitude Specifications) Ví dụ 2: Thiết kế lọc dải thơng có đặc tính kỹ thuật lọc dải thông thiết kế ví dụ Trong cửa sổ FDATool,  Ta chọn Bandpass, miền Response Type  Trong miền Design Method, ta chọn FIR thẻ Window  Trong miền Filter Order, ta chọn Specify Order nhập số 16  Trong miền Options, chọn thẻ Hamming tùy chọn Window  Trong miền Frequency Specifications, tùy chọn units ta chọn Hz, nhập 8000 Fs, 1600 Fc1 2400 Fc2 Đỗ Thành Nam – robotden@gmail.com  Thêm vào đó, từ manu Analysis kéo xuống, phân tích đáp ứng biên độ (Magnitude Response), đáp ứng pha (Phase Response), hệ số lọc (Filter Ceofficients),…  Click vào Design Filter, ta thu kết cần thiết kế Các tùy chọn thực hình 3.5 đây: Hình 3.5 Chọn tham số đặc tính kỹ thuật lọc Hơn nữa, export hệ số việc sử dụng tùy chọn Export manu File Từ Export to ta chọn Workspace, Coefficient File (ASCII), MAT-File SPTool Từ Export As ta chọn Coefficients Objects Chúng ta nhập tên biến trường Variable Names Sau Click Apply, OK, ta thu kết hình 3.6 đây: Đỗ Thành Nam – robotden@gmail.com Hình 3.6 Cửa sổ Export hệ số lọc Để thêm thơng tin chi tiết, tham khảo Signal Processing Toolbox User’s, tìm hiểu cách thức thiết kế lọc sử dụng công cụ SPTool ... ………  Ví dụ 1: Thiết kế lọc FIR sử dụng hàm: fir1 (N,Wn,window) Thiết kế lọc FIR băng thông tần số 1.6 (= 0.4*(Fs/2)) KHz 2.4 (= 0.6*(Fs/2)) KHz, tần số lấy mẫu Fs = KHz, sử dụng để lọc tín hiệu... fir1 (n,Wn,ftype,kaiser(n+1,beta),'noscale'); freqz(hh) Cách 2: Sử dụng FDATool để thiết kế lọc FDATool công cụ hữu dụng chúng sử dụng rộng rãi để thiết kế lọc Để kích hoạt cơng cụ thiết kế này, cửa sổ lệnh Matlab, ta thực nhập lệnh... x=x1+x2+x3+x4; tạo tín hiệu hỗn hợp % thiết kế lọc vẽ đáp ứng biên độ đáp ứng pha lọc >> N=16; bậc lọc >> wn=[0.4 0.6]; lọc băng thông giữa: 0.4*(Fs/2) 0.6*(Fs/2) >> b =fir1 (N,wn); >> b b= Columns through

Ngày đăng: 17/04/2020, 14:27

Xem thêm:

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w