1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO TN TÍN HIỆU HỆ THỐNG MATLAB

61 21 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 61
Dung lượng 2,32 MB

Nội dung

BÁO CÁO: TN TÍN HIỆU HỆ THỐNG LAB : MATLAB 1.1 Giới thiệu MATLAB - MATLAB viết tắt Matrix Laboratory , phần mềm tốn học hãng Mathworks để lập trình , tính tốn số có tính trực quan cao - MATLAB làm việc chủ yếu với ma trận Ma trận cỡ mxn bảng chữ nhật gồm mxn số xếp thành m hàng n cột MATLAB làm việc với nhiều kiểu liệu khác Với chuỗi kí tự MATLAB xem dãy kí tự dãy mã số ký tự - MATLAB dùng để giải tốn giải tích số, xử lý tín hiệu số, xử lý đồ họa, … mà lập trình cổ điển Hiện nay, MATLAB có đến hàng ngàn lệnh hàm tiện ích Ngồi hàm cài sẵn ngơn ngữ, MATLAB cịn có lệnh hàm ứng dụng chuyên biệt Toolbox, đểmở rộng mơi trường MATLAB nhằm giải tốn thuộc phạm trù riêng Các Toolbox quan trọng tiện ích cho người dùng tốn sơ cấp, xử lý tín hiệu số, xử lý ảnh, xử lý âm thanh, ma trận thưa, logic mờ,… - Giao diện phần mềm MATLAB bắt đầu chạy ứng dụng : - Một số lệnh phố biến MATLAB hỗ trợ người dùng : • info : hiển thị thơng tin liên lạc sản phẩm • demo : hiển thị tùy chọn phổ biến MATLAB BÁO CÁO: TN TÍN HIỆU HỆ THỐNG • help : trình bày số câu lệnh ; help help giải thích cách help làm việc • helpbrowers : mở cửa sổ Help Window • lookfor : tìm kiếm thơng qua help cho chuỗi xác đinh 1.2.Các toán tử - Có loại tốn tử tốn tử unary(tốn tử ngơi) binary (tốn tử hai ngơi) Ví dụ kí hiệu “-” hiểu tốn tử ngơi giá trị âm hiểu tốn tử hai ngơi tốn tử trừ - Dưới vài toán tử phổ biến sử dụng với biểu thức số học : + toán tử cộng - giá trị âm , toán tử trừ * toán tử nhân / toán tử chia lấy tử (9/3 = 3) \ toán tử chia lấy mẫu (3/12 = 4) ^ toán tử lũy thừa 1.3.Vector ma trận - Vector ma trận sử dụng để lưu tập giá trị có kiểu liệu Một vector vector hàng vector cột Một ma trận hình thành từ bảng giá trị Ma trận cỡ mxn bảng số chữ nhật gồm mxn số xếp thành m hàng n cột : • Nếu m = ma trận chuyển thành vector hàng • Nếu n = ma trận chuyển thành vector cột • Nếu m = n = ma trận trở thành đại lượng vơ hướng • - Một vector MATLAB coi mảng chiều ngôn ngữ khác Một ma trận coi mảng chiều Vì MATLAB , thực tốn tử với vector ma trận coi toán tử mảng BÁO CÁO: TN TÍN HIỆU HỆ THỐNG • Tạo vector hàng - Có nhiều cách tạo biến vector hàng Cách trực tiếp đặt giá trị bạn muốn vào dấu ngoặc vuông , phân cách dấu cách dấu phẩy Ví dụ : Sử dụng colon operator (toán tử : ) lấy giá trị khoảng xác định Ví dụ : - Chú ý trường hợp , cặp [] không cần thiết để định nghĩa vector Với colon operator , giá trị bước nhảy xác định với dấu chấm khác , theo mẫu sau (giá trị đầu : bước nhảy : giá trị cuối) Ví dụ : - Tương tự hàm linspace tạo vector có n giá trị từ x đến y Ví dụ tạo vector với giá trị nằm cách khoảng từ đến 15 : - Biến vector tạo dựa biến có sẵn Ví dụ tạo vector chứa vector tạo : BÁO CÁO: TN TÍN HIỆU HỆ THỐNG - Đặt vector giống tạo vector gọi concatenating (nối ghép) vector • Tạo vector cột - Để tạo vector cột , ta đặt giá trị cần truyền vào cặp dấu ngoặc vuông phân cách dấu chấm phẩy (;) : - Không thể sử dụng colon operator để tạo vector cột Tuy nhiên có cách khác chuyển hàng thành cột để tạo vector theo ý Ví dụ : • Tạo biến ma trận - Việc tạo biến ma trận thực chất kết hợp biến vector hàng cột lại với Ví dụ biến mat tạo giá trị cho trước : BÁO CÁO: TN TÍN HIỆU HỆ THỐNG - Yêu cầu để tạo ma trận số giá trị hàng phải Nếu khác hiển thị thơng báo lỗi , ví dụ : - Chúng ta có thể tạo ma trận dựa colon operator cho hàng Ví dụ : - Một cách khác để tạo ma trận không cần sử dụng dấu chấm phẩy để kết thúc hàng nhấn phím Enter sau hàng Ví dụ : - Ma trận với số ngẫu nhiên tạo cách sử dụng hàm rund randint Hai đối số hàm randint xác định số hàng cột ma trận Đối số cuối xác định giá trị ngẫu nhiên ma trận nằm khoảng Ví dụ tạo ma trận 2x4 với giá trị nằm khoảng 10 đến 30 : - Đối với hàm rand , truyền vào hàm giá trị n ma trận nxn tạo với giá trị ngẫu nhiên kiểu số thực : BÁO CÁO: TN TÍN HIỆU HỆ THỐNG - Truyền vào giá trị m, n ma trận mxn với giá trị ngẫu nhiên số thực tạo : - MATLAB cung cấp hàm để tạo ma trận đặc biệt Ví dụ hàm tạo ma trận với giá trị Nếu truyền đối số n ma trận nxn tạo , đối số m, n ma trận mxn tạo : • MATLAB scripts - Một script chứa mã viết MATLAB lưu trữ file Nội dung script hiển thị cửa sổ Command Window Script thực thi chạy cách nhập vào tên file không chứa đuôi mở rộng - Quy tắc tên file giống cho biến : bắt đầu chữ , sau chữ , chữ số kí tự đặc biệt - File script mặc định lưu Work Directory Ví dụ , ta tạo file script1.m để tính diện tích hình trịn Ta viết mã vào script1.m sau : BÁO CÁO: TN TÍN HIỆU HỆ THỐNG - Sau lưu lại file, muốn hiển thị nội dung Command Window ta sử dụng lệnh type : - Để chạy đoạn mã , ta cần gõ tên file script Command Window : • Plot Subplot - Lệnh plot MATLAB cho phép vẽ đồ thị từ liệu vector Ví dụ có biến t thời gian y tín hiệu , gõ lệnh plot(t,y); xuất giao diện đồ thị t y Các hàm phổ biến cho plot: • title (‘………….’) : thích tên đồ thị • xlabel ('……….’) : thích tên trục x đồ thị • ylabel(‘………') : thích tên trục y đồ thị • grid on : hiển thị lưới ô vuông - Để hiển thị nhiều đồ thị hình , sử dụng hàm subplot Hàm gồm đối số (m,n,p) , m n chia hình thành m hàng n cột Đối số p xác định đồ thị xuất trước • subplot (…,….,…): thị vùng muốn vẽ • stem (signal): vẽ chuỗi liệu rời rạc • angle(x): argument số phức a BÁO CÁO: TN TÍN HIỆU HỆ THỐNG • real(x): phần thực x ; • imag(x): phần ảo x • conj(x): số phức liên hợp x • abs(x) :modun số phức x 1.6.Câu lệnh lựa chọn • • Biểu thức quan hệ Các tốn tử quan hệ MATLAB : Toán tử > < >= >load fall %Tải file >>x = fall; >>X = fft(x) 47 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG - Lệnh fft cho tần số không nằm trung tâm.Để hiển thị kết miền tần số : hiển thị nửa kết ( phần tần số dương), hai hiển thị vùng tần số lệnh fftshift Lệnh fftshift để dịch phổ vào trung tâm, đối xứng Ta sử dụng abs để hiển thị biên độ phổ tín hiệu Lưu ý biến đổi Fourier tín hiệu giá trị phức, abs sử dụng để xem độ lớn (biên độ) phổ - Đoạn code sau thực cách: >> N = length(x); %Xác định kích thước x >>pfreq = [0:N/2]* Fs/N; %Khoảng tần số >>Xpos = X(1:N/2+1) ; % Khoảng giá trị x chạy >>plot(pfreq,abs(Xpos)) ; % Vẽ đồ thị >> figure; >>freq = [-(N/2+1) :N/2]*Fs/N; % Tần số đồ thị >>plot(freq,abs(fftshift(X))); - Sau thay đổi tín hiệu miền tần số,lệnh ifft dùng để chuyển lại miền thời gian mong muốn >>xnew = real(ifft(X)); + Chú ý:Chúng ta cần dùng lệnh “real” biến đổi Fourier ngược cho giá trị hỗn hợp 4.Bộ lọc thơng thấp: - Bộ lọc(filter): q trình lọc liệu không cần thiết, loại bỏ liệu giữ lại thứ mà muốn - Bộ lọc thơng thấp lọc cho phép tín hiệu hoạt động từ Hz -> tần số cắt (cutoff) nó, tín hiệu tần số cao lọc - Một lọc thông thấp lý tưởng loại bỏ tần số cao hồn tồn : - Một lọc thơng thấp thực tế thường có giá trị thấp khơng với | | tần số cao giảm độ lớn tần số tăng Bộ lọc thơng thấp đơn giản nhất(ít hiệu nhất) cho bởi: 48 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG Bộ lọc thơng thấp dùng Matlab cách sử dụng phép biến đổi Fourier Phép nhân miền tần số hoạt động tương tự chập miền thời gian Nếu ta có hai tín hiệu lọc miền tần số ta nhân chúng để tìm đầu hệ thống: Ví dụ cách sử dụng Matlab để thực lọc thơng thấp với tín hiệu vào x,các tần số cắt lọc biểu diễn số a Ta cần xác định H miền tần số >> load fall % tải tín hiệu >>x = fall; >>X = fft(x); % biến đổi tín hiệu x sang miền tần số >>N = length(X); >>a = 100*2*pi; >>w = (-N/2+1:(N/2)); % Vector tần số trung tâm (rad / s) >>H = a / (a + i*w); % Tạo lấy mẫu trung tâm H >>plot(w*Fs/N,abs(H)) % w chuyển đổi trở lại Hz - Đồ thị dạng đáp ứng tần số hệ thống mà ta sử dụng >>Hshift = fftshift(H); >> Y = X * Hshift'; %H khơng nằm trung tâm %Bộ lọc tín hiệu - Chú ý:Khi nhân hai vector cần ý kích thước hai vector có hay chưa - Ta có đầu hệ thống miền tần số, dùng Fourier ngược để chuyển miền thời gian Nghe âm gốc sửa đổi nghe khác biệt Sử dụng tần số lấy mẫu Fs >> y = real(ifft(Y)); >>sound(x, Fs) ) % âm gốc 49 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG >> sound(y, Fs) % âm lọc qua thông thấp - Bộ lọc làm giảm âm tín hiệu mà nghe sử dụng lệnh sound mà không dùng lệnh soundsc tự động chia tỉ lệ - Chú ý: Đơi khi, bạn khuếch đại tín hiệu để có chiều cao giống tín hiệu ban đầu >> y = y * (max(abs(x))/max(abs(y))); High -pass Filtering : - Bộ lọc thông cao lọc cho phép tín hiệu hoạt động từ tần số cắt đến vơ tín hiệu tần số thấp nhỏ tần số cắt lọc - Một lọc thông cao lý tưởng loại bỏ hoàn toàn tần số thấp - Bộ lọc thơng cao thực tế thường có giá trị thấp không với tần số thấp tăng độ lớn tần số tăng Mạch lọc thông cao cho - Mạch lọc thực giống mạch lọc thơng thấp Với tần số cắt Bài Tập Bài tập 1: Lọc thông thấp âm castanets44m.way sử dụng hàm audioread, với tần số cắt a=500*2*pi,vẽ phổ biên độ đồ thị miền thời gian tín hiệu trước sau lọc thông thấp Code: clc; clear all; close all; [x,Fs]=wavread('castanets44m.wav'); X=fft(x); N=length(x); 50 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG a=500*2*pi; w1=(-N/2+1:(N/2)); w=w1.*Fs/N; H=a./(a+1i*w); Hshift=fftshift(H); Y=X.*Hshift'; y=real(ifft(Y)); sound(x,Fs); sound(y,Fs); subplot(2,1,1); plot(w,abs(fftshift(X))); title('Tin hieu dau'); subplot(2,1,2); plot(w,abs(fftshift(Y))); title('Tin hieu loc') Kết quả: 51 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG Nhận xét: Tín hiệu qua đầu lọc bị giảm biên độ, tín hiệu có thần phần tần số cao tần số cắt bị loại bỏ Bài tập 2: Tạo tín hiệu x(t) use lệnh sau :x= repmat([zeros(1,99),1]); lọc thơng th ấp tín hiệu với tần số cắt 20 , vẽ đồ thị miền thời gian phổ biên độ tín hiệu gốc tín hiệu gốc tín hiệu lọc thông thấp Code: clc; clear all; close all; x=repmat([zeros(1,99) 1], 1, 5); X=fft(x); N=length(x); a=20; w=(-N/2+1:(N/2)); 52 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG H=a./(a+1i*w); Hshift=fftshift(H); Y=X.*Hshift; y=real(ifft(Y)); subplot(4,1,1); plot(w,abs(fftshift(x))); title('Tin hieu ban dau mien thoi gian'); subplot(4,1,2); plot(w,abs(fftshift(X))); title('Tin hieu ban dau mien tan so'); subplot(4,1,3); plot(w,abs(fftshift(Y))); title('Tin hieu loc mien tan so'); subplot(4,1,4); plot(w,abs(fftshift(y))); title('Tin hieu loc mien thoi gian'); Kết quả: 53 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG Nhận xét: Bài tập 3: Lọc thơng cao tín hiệu file castanets44m.way , sử dụng tần số cắt a =2000*2*pi, vẽ phổ biên độ đồ thị miền tần số tín hiệu gốc tín hiệ u lọc thơng cao Code: clc; clear all; close all; [x,Fs]=wavread('castanets44m.wav'); X=fft(x); N=length(x); a=2000*2*pi; w0=(-N/2+1:(N/2)); w=w0.*Fs/N; 54 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG H=1-(a./(a+(1i*w))); Hshift=fftshift(H); Y=X.*Hshift'; y=real(ifft(Y)); sound(x,Fs); sound(y,Fs); subplot(2,1,1); plot(w,abs(fftshift(X))); title('Tin hieu ban dau'); subplot(2,1,2); plot(w,abs(fftshift(Y))); title('Tin hieu loc') Kết quả: Nhận xét: Với lọc thông cao, mạch lọc chọn tín hiệu có tần số cao, bỏ tín hiệu có tần số thấp tần số cắt 55 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG Bài tập 4: Tín hiệu mixed.wav tín hiệu tạo bơi bassdrum.wav , hatclose d.wav, shake.mat, lọc tín hiệu để lấy tiếng ,sau tín hiệu để lấy tiếng kèn Code: clc; clear all; close all; [x,Fs]=wavread('mixed.wav'); X=fft(x); N=length(x); a3=2000; w3=(-N/2+1:(N/2)); w4=w3.*Fs/N; H=1-(a3./(a3+(1i*w4))); Hshift3=fftshift(H); a5=5000; w5=(-N/2+1:(N/2)); w6=w5.*Fs/N; H5=1-(a5./(a5+(1i*w6))); Hshift5=fftshift(H5); a=6000; w0=(-N/2+1:(N/2)); w=w0.*Fs/N; H2=1-(a./(a+(1i*w))); Hshift=fftshift(H2); Y=X.*Hshift5'.*Hshift3'.*Hshift'; y=real(ifft(Y)); y=y*(max(abs(x))/max(abs(y))); 56 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG a1=100; w1=(-N/2+1:(N/2)); w2=w1.*Fs/N; H1=a1./(a1+1i*w2); Hshift1=fftshift(H1); a10=50; w10=(-N/2+1:(N/2)); w20=w10.*Fs/N; H10=a10./(a10+1i*w20); Hshift10=fftshift(H10); a12=5; w12=(-N/2+1:(N/2)); w22=w12.*Fs/N; H12=a10./(a10+1i*w22); Hshift12=fftshift(H12); Y1=X.*Hshift1'.*Hshift10'.*Hshift12'; y1=real(ifft(Y1)); y1=y1*(max(abs(x))/max(abs(y1))); sound(x,Fs); sound(y1,Fs); sound(y,Fs); subplot(3,1,1); plot(w5,abs(fftshift(X))); title('Tin hieu ban dau'); subplot(3,1,2); plot(w5,abs(fftshift(Y))); 57 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG title('Tin hieu loc thong cao'); subplot(3,1,3); plot(w5,abs(fftshift(Y1))); title('Tin hieu loc thong thap'); Kết quả: Nhận xét: Với lọc thông cao, mạch lọc chọn tín hiệu có tần số cao, bỏ tín hiệu có tần số thấp tần số cắt, Với lọc thông thấp, mạch lọc chọn tín hiệu có tần số thấp, bỏ tín hiệu có tần số cao tần số cắt 58 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG Bài tập 5: Có thu âm, trmpet tiếng mưa rơi lúc, có file tín hiệu mixedisg=rainstick*10+shakr.mat, lọc bỏ tiếng mưa giữ lại tiếng kèn Code: clc; clear all; close all; load rainstick; load shake; mixedsig = shake + 10*rainstick; x=mixedsig; a=1000*pi; Fs=8000; X=fft(x); N=length(x); w0=(-N/2+1:(N/2)); w=w0.*Fs/N; H=1-(a./(a+1i*w)); Hshift=fftshift(H); Y=X.*Hshift'; y=real(ifft(Y)); a1=500; w2=(-N/2+1:(N/2)); w1=w2.*Fs/N; H1=a1./(a1+1i*w1); Hshift1=fftshift(H1); Y1=X./Hshift1'; y1=real(ifft(Y1)); subplot(3,1,1); 59 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG plot(w,abs(fftshift(X))); title('Tin hieu ban dau'); subplot(3,1,2); plot(w,abs(fftshift(Y))); title('Tin hieu loc thong cao'); subplot(3,1,3); plot(w,abs(fftshift(Y1))); title('Tin hieu loc thong thap'); Kết quả: 60 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG Nhận xét: Với lọc thông cao, mạch lọc chọn tín hiệu có tần số cao, bỏ tín hiệu có tần số thấp tần số cắt, Với lọc thông thấp, mạch lọc chọn tín hiệu có tần số thấp, bỏ tín hiệu có tần số cao tần số cắt Nhận xét chung: Khi muốn loại bỏ tần số cao tần số cắt, ta dùng lọc thông thấp Khi muốn loại bỏ tần số thấp tần số cắt, ta dung lọc thông cao 61 ... Bàiạo tín hiệu x(n) gồm thành phần tần số thấp cao: 34 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG Với n=40, f1 = 0,02là tần số thấp, f2 =40 tần số cao (do giáo viên hướng dẫn cho) THỰC HÀNH VỚI SIMULINK... gom tan so thap va cao' ); xlabel('n'); ylabel('xn'); 44 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG grid on Kết quả: Nhận xét: Hàm đồ thị hình sin 5.Bài Simulink Sơ đồ Với K= 1.5 45 BÁO CÁO: TN TÍN HIỆU HỆ THỐNG... (cutoff) nó, tín hiệu tần số cao lọc - Một lọc thông thấp lý tưởng loại bỏ tần số cao hồn tồn : - Một lọc thơng thấp thực tế thường có giá trị thấp khơng với | | tần số cao giảm độ lớn tần số tăng

Ngày đăng: 28/06/2021, 07:43

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w