1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bao cao TN tin hieu he thong 2017 converted

48 183 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 48
Dung lượng 2,46 MB

Nội dung

athworks để lập trình , tính toán số và có tính trực quan rất cao . MATLAB làm việc chủ yếu với ma trận . Ma trận cỡ mxn là bảng chữ nhật gồm mxn số được sắp xếp thành m hàng và n cột. MATLAB có thể làm việc với nhiều kiểu dữ liệu khácnhau. Với chuỗi kí tự MATLAB cũng xem là một dãy các kí tự hay là dãy mã số của cácký tự. MATLAB dùng để giải quyết các bài toán về giải tích số, xử lý tín hiệu số, xử lý đồ họa,… mà không phải lập trình cổ điển.Hiện nay, MATLAB có đến hàng ngàn lệnh và hàm tiện ích. Ngoài các hàm cài sẵn trongchính ngôn ngữ, MATLAB còn có các lệnh và hàm ứng dụng chuyên biệt trong cácToolbox, đểmở rộng môi trường MATLAB nhằm giải quyết các bài toán thuộc các phạmtrù riêng. Các Toolbox khá quan trọng và tiện ích cho người dùng như toá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 của phần mềm MATLAB khi bắt đầu chạy ứng dụng : Một số lệnh phố biến trong MATLAB hỗ trợ người dùng :  info : hiển thị thông tin liên lạc về sản phẩm. demo : hiển thị các tùy chọn phổ biến trong MATLAB. 1  help : trình bày một số câu lệnh ; help help giải thích cách help làm việc helpbrowers : mở ra cửa sổ Help Window lookfor : tìm kiếm thông qua help cho bởi 1 chuỗi xác đinh. 1.2. Các toán tử Có 2 loại toán tử cơ bản là toán tử unary(toán tử một ngôi) và binary (toán tử hai ngôi).Ví dụ kí hiệu “” được hiểu toán tử một ngôi là giá trị âm và hiểu toán tử hai ngôi là toán tử trừ . Dưới đây là một vài toán tử phổ biến được sử dụng với các 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ử (93 = 3) toán tử chia lấy mẫu (312 = 4) toán tử lũy thừa 1.3. Vector và ma trận Vector và ma trận được sử dụng để lưu tập các giá trị có cùng kiểu dữ liệu . Một vectorcó thể là vector hàng hoặc vector cột . Một ma trận có thể được hình thành từ một bảng giátrị . Ma trận cỡ mxn là bảng số chữ nhật gồm mxn số được sắp xếp thành m hàng và n cột :  Nếu m = 1 thì ma trận chuyển thành vector hàng Nếu n = 1 thì ma trận chuyển thành vector cột Nếu m = n = 1 thì ma trận trở thành đại lượng vô hướng. Một vector trong MATLAB được coi là mảng 1 chiều trong các ngôn ngữ khác. Một matrận được coi là mảng 2 chiều . Vì vậy trong MATLAB , thực hiện toán tử với vector vàma trận thì được coi là các toán tử mảng .1.3.1. Tạo vector hàng Có nhiều cách tạo biến vector hàng . Cách trực tiếp nhất là đặt các giá trị bạn muốn vàotrong dấu ngoặc vuông , và được phân cách bởi dấu cách hoặc dấu phẩy . Ví dụ : Sử dụng colon operator (toán tử : ) lấy từng giá trị trong khoảng xác định. Ví dụ : 2 Chú ý trong trường hợp này , cặp là không cần thiết để định nghĩa vector. Với colon operator , một giá trị bước nhảy có thể xác định với 1 dấu 2 chấm khác , theomẫu sau (giá trị đầu : bước nhảy : giá trị cuối) . Ví dụ : Tương tự hàm linspace tạo ra 1 vector có n giá trị từ x đến y . Ví dụ tạo ra vector với 5 giá trị nằm cách đều trong khoảng từ 3 đến 15 : Biến vector cũng có thể được tạo dựa trên các biến có sẵn . Ví dụ tạo một vector mới chứa 2 vector đã tạo ở trên : Đặt 2 vector cùng nhau giống như tạo một vector mới được gọi là concatenating (nối ghép) vector.1.3.2. Tạo vector cột Để tạo vector cột , ta đặt các giá trị cần truyền vào trong cặp dấu ngoặc vuông và phâncách bởi dấu chấm phẩy (;) : Không thể sử dụng colon operator để tạo ra vector cột . Tuy nhiên có một cách khác là chuyển hàng thành cột để tạo ra vector theo ý . Ví dụ : 3 1.3.3. Tạo biến ma trận Việc tạo biến ma trận thực chất là kết hợp biến vector hàng và cột lại với nhau . Ví dụbiến mat được tạo bởi các giá trị cho trước : Yêu cầu để tạo ma trận là số giá trị trên các hàng phải bằng nhau . Nếu khác thì sẽ hiển thị một thông báo lỗi , ví dụ : Chúng ta có thể có thể tạo ma trận dựa trên colon operator cho các 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 một hàng là nhấn phím Enter sau mỗi hàng. Ví dụ : Ma trận với các số ngẫu nhiên được tạo bằng cách sử dụng hàm rund và randint . Hai đối số đầu tiên trong hàm randint xác định số hàng và cột của ma trận . Đố

TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG KHOA ĐIỆN TỬ - VIỄN THÔNG ─────── * ─────── PC 2018-12-10 21:04:29 -jkkk ]ơ] LAB : MATLAB 1.1 Giới thiệu MATLAB - MATLAB viết tắt Matrix Laboratory , phần mềm toá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 toán giải tích số, xử lý tín hiệu số, xử lý đồ họa, … mà khơng phải 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ó lệnh hàm ứng dụng chun biệt Toolbox, đểmở rộng môi trường MATLAB nhằm giải toá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 - - - -  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 tố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 1.3.1 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 : - Đặt vector giống tạo vector gọi concatenating (nối ghép) vector 1.3.2 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ụ : 1.3.3 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 : - 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 : - 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 : Bài tập 1: Tạo biến ftemp để lưu nhiệt độ F, chuyển đổi thành độ C lưu vào biến ctemp theo công thức: C=(F-32)*5/9 Code: Kết quả: Bài tập 2: Sử dụng toán tử “:” tạo vector sau: Code: Kết quả: Bài tập 3: Sử dụng hàm linspace, tạo vector sau: Code: Kết quả: Bài tập 4: Sử dụng toán tử “:” tạo ma trận sau: Code: Kết quả: 1.4 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: - 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 : 1.5 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: o title (‘………….’) : thích tên đồ thị o xlabel ('……….’) : thích tên trục x đồ thị o ylabel(‘………') : thích tên trục y đồ thị o 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 o subplot (…,….,…): thị vùng muốn vẽ o stem (signal): vẽ chuỗi liệu rời rạc o angle(x): argument số phức a o real(x): phần thực x ; o imag(x): phần ảo x o conj(x): số phức liên hợp x o abs(x) :modun số phức x Bài tập 5: Vẽ đồ thị exp(x) với x chạy từ -2 đến , bước nhảy 0,1 Đặt title , label cho trục Code : Kết quả: Bài tập 6: Vẽ đồ thị sin(x) với x chạy từ đến 10 :  Sử dụng 10 điểm khoảng  Sử dụng 100 điểm khoảng Code: Kết quả: Triangle: Thiết kế đáp ứng xung cho hệ thống h đầu vào hệ thống x để tạo hệ thống y xung hình tam giác hồn tồn đối xứng, có độ dài 100 Code: Kết quả: 34 LAB 4: FILTERING PERIODIC SIGNALS Giớ i thiêụ - Trong Lap 4, Trong lab ta tìm hiểu tác dụng lọc tín hiệu sử dụng hệ thống LTI thực miền tần số Trong lap này chúng ta sẽ nghiên cứ u bô loc đó là: bô ḷ oc thông cao loc thông thấp Loc thông cao là loc tần số thấp chı̉ cho các tần số cao qua.Loc thông thấp thı̀ ngươc laị Các câu lệnh nguồn liệu MATLAB: - Một số câu lệnh dùng lap : - fft : biến đổi Fourier thuận (tức miền thời gian sang miền tần số) - iff : biến đổi Fourier ngược (tức biến đổi ngược lại, miền tần số qua miền thời gian) - tffshift: dic̣ h chuyển tần số zero vào trung tâm phổ - sound : âm nghe chưa định tỉ lệ (clip đầu vào [-1,1] - soundsc: âm thu nhỏ (quy mơ/ bình thường hóa đầu vào [-1,1] - wavread: đọc, định dạng file WAV, tỉ lệ lấy mẫu file WAV lấy câu lệnh sau: [x,Fs] = wavread('filename.wav') (Với x vector âm Fs tần số lấy mẫu) Ngày dùng: -audioread: đọc, định dạng file WAV, tỉ lệ lấy mẫu file MP3 lấy câu lệnh sau: [x,Fs] = audioread('filename.wav') (Với x vector âm Fs tần số lấy mẫu) Chuyển đổi tín hiệu miền tần số ngược lại: - Trong Matlab biến đổi Fourier tín hiệu liên tục miền thời gian khơng thể thực cách xác Những khác biệt quan trọng biến đổi Fourier rời rạc máy tính biến đổi Fourier liên tục : dải tần số hữu hạn tần số mẫu rời rạc Độ mịn dải tần số tín hiệu sau biến đổi phụ thuộc vào tần số lấy mẫu tín hiệu Tần số lấy mẫu lớn phổ mịn - Ta xét ví dụ trong Lap 3: Tín hiệu có tần số lấy mẫu Fs = 8000 Có nghĩa dải tần số từ [-4000,4000]Hz Độ phân giải tần số phụ thuộc vào độ dài tín hiệu (mà chiều dài biểu diễn tần số) - Vd: >>load fall %Tải file >>x = fall; >>X = fft(x) - 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ổ 36 - Đ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 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à mı̀nh 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 hoàn toà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: �� (�) = � với α tần số cắt �□�� - 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: y(t)=x(t)*h(t) Y(ω)=X (ω) H( ω) - 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); %H không nằm trung tâm >> Y = X * Hshift'; %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 >> 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 Sử dụng audioread để đọc file castanets44.wav Thực >> y = y * (max(abs(x))/max(abs(y))); Bài tập 1: Lọc thấp thông qua âm Sử dụng audioread để tải âm castanets44m.wav, với tần số cắt a = 500 * * pi Vẽ phổ biên độ đồ thị miền thời gian tín hiệu trước sau lọc thơng thấp Nhận xét tín hiệu thu nghe Code: Kết quả: Nhận xét: - Trên phổ biên độ ban đầu tín hiệu bị giảm mạnh tần số lọc thông thấp khơng đổi - Âm nghe trầm ấm Bài tập 2: Tạo tín hiệu x(t) dùng lệnh sau: x=repmat([zeros(1,99),1)],1,5); , lọc thông thấp tin 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 lọc thơng thấp Code: Kết quả: Nhận xét: - Phổ biên độ tín hiệu lọc giống hình dạng phổ biên độ lọc thơng thấp - Trên miền thời gian, tín hiệu lọc có độ nghiêng so với tín hiệu gốc High -pass Filtering : (Bộ lọc thông cao) - 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ỏ hồn tồ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 3: Lọc thơng cao tín hiệu castanets44m.wav, 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: 42 Kết quả: Nhận xét: - Phổ biên độ lọc tín hiệu bị giảm mạnh, phổ ban đầu giảm nhẹ - Âm nghe nhỏ hơn, trầm ấm Bài tập 4: Tín hiệu mixed.wav tín hiệu tạo bassdrum.wav, hatclosed.wav, shake.mat, lọc tín hiệu để lấy tiếng trống, sau lọc tín hiệu để lấy tiếng kèn Code: Kết quả: Nhận xét: - Tín hiệu tần số cao bị lọc đi, có tín hiệu tần số thấp giữ lại - Sử dụng nhiều lọc liên tiếp thu lại kết có chất lượng mong muốn cao - Chỉ nghe tiếng trống Nhận xét: - Tín hiệu tần số thấp bị lọc đi, có tín hiệu tần số cao giữ lại - Sử dụn nhiều loc liên tiếp thu kết có chất lượng mong muốn cao - Chỉ nghe tiếng kèn Bài tập 5: Trộn tín hiệu file rainstick.mat shake.mat với mixedsig=rainstick.mat*10+shake.mat , lọc tín hiệu cho loại bỏ tiếng mưa lấy tiếng kèn Code: Kết quả: Nhận xét: Sau nghe lại đoạn nhạc file WAV ta nhận thấy: - Đối với lọc thơng thấp, tín hiệu phổ có biên độ giảm, mạch lọc chọn tín hiệu có tần số thấp, âm nghe êm tai - Với lọc thơng cao, tín hiệu phổ có biên độ tăng, mạch lọc chọn tín hiệu có tần số cao, âm nghe vang - Muốn tín hiệu quả tên nên dùng nhiều bơ ḷ oc cho tıń hiệu đo.́ loc hiêu

Ngày đăng: 10/12/2018, 21:21

TỪ KHÓA LIÊN QUAN

w