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

Báo cáo thí nghiệm tín hiệu và hệ thống

21 609 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 21
Dung lượng 743,25 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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... Chuyển đổi tín hiệu trong miền tần số và ngược lại - Trong Matlab thì biến đổi Fou

Trang 1

BÀI THÍ NGHIỆM 1

MATLAB

I TÓM TẮT LÝ THUYẾT

1 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ử (9/3 = 3)

\ toán tử chia lấy mẫu (3/12 = 4)

^ toán tử lũy thừa

2 Vectơ 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 vector có 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

ma trậ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

2.1 Tạo vectơ hàng

Tạo 1 vectơ v = [1,2,3,4]

hoặc v = [1 2 3 4]

Dùng colon operator: v = 1:2:9 với 1: giá trị đầu, 9:giá trị cuối, 2:bước nhảy

ta dùng v= 1:9 trường hợp bước nhảy bằng 1

Dùng linspace: v = linspace(1,9,5) với 1: giá trị đầu, 9: giá trị cuối, 5: số phần

tử

2.2 Tạo vectơ cột

Ta dùng dấu ; để ngăn cách giữa các phần tử

Trang 2

mat = [1:3;4:6]

mat = [linspace(3,15,5);1:2:9]

Tạo ma trận ngẫu nhiên mat = randint(2,3,[10,20]) với 2 : số hàng, 3 : số cột, [10,20] : phạm vi giá trị

Ma trận không mat = zeros(2,4) với 2: số hàng, 4 : số cột

trường hợp ma trận không vuông mat = zeros(3) với 3 : số hàng, cột

3 Plot và subplot

Lệnh plot trong MATLAB cho phép vẽ đồ thị từ dữ liệu là vector Ví dụ nếu có biến t

là thời gian và y là tín hiệu , gõ lệnh plot(t,y); lập tức xuất hiện giao diện đồ thị của t

và y Các hàm phổ biến cho plot:

title ('…') : chú thích tên đồ thị

xlabel ('…') : chú thích tên trục x của đồ thị

ylabel('…') : chú thích tên trục y của đồ thị

grid on : hiển thị lưới các ô vuông

- Để hiển thị nhiều đồ thị trên một màn hình , sử dụng hàm subplot Hàm này gồm 3 đối số (m,n,p) , m và n chia màn hình ra thành m hàng và n cột Đối số p xác định đồ thị nào xuất hiện trước

subplot (…,…,…): hiện thị vùng muốn vẽ

stem (signal): vẽ chuỗi dữ liệu rời rạc

angle(x): argument của số phức a

real(x): phần thực của x ;

imag(x): phần ảo của x

conj(x): số phức liên hợp của x

abs(x) :modun của số phức x

4 Điều kiện if và if – else

5 Vòng lặp for

Cấu trúc: for điều khiện

câu lệnh

end

Trang 3

II BÀI TẬP

Trang 4

fprintf('A storm is a tropical storm')

else fprintf('A storm is a hurricane')

end

end

Trang 5

%max cua moi hang trong ma tran

for i=1:3 maxh=x(i,1);

Trang 6

BÀI THÍ NGHIỆM 2 FOURIER SERIES & FOURIER TRANSFORMS (CHUỖI FOURIER VÀ BIẾN ĐỔI FOURIER)

I TÓM TẮT LÝ THUYẾT

2 Một số lệnh

conj(x): tính lượng liên hợp phức

abs(x): tính biên độ

angle(x): pha

length(x): tính chiều dài của vectơ

stem : vẽ chuỗi dữ liệu rời rạc

plot : vẽ chuỗi dữ liệu liên tục

Trang 7

title('Bien do trong mien tan so')

Trang 11

BÀI THÍ NGHIỆM 3 FILTERING PERIODIC SIGNALS

(LỌC TÍN HIỆU)

I TÓM TẮT LÝ THUYẾT

1 Một số lệnh

fft : biến đổi Fourier thuận (tức là miền thời gian sang miền tần số)

ifft : biến đổi Fourier ngược (tức là biến đổi ngược lại, miền tần số qua miền thời gian)

fftshift: dịch chuyển tần số zero vào trung tâm phổ

sound : âm thanh nghe chưa định tỉ lệ (clip đầu vào [-1,1]

soundsc: âm thanh 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 của file WAV cũng có thể được lấy ra bằng câu lệnh như sau:[x,Fs] = wavread('filename.wav')

(Với x là vector âm thanh và Fs là tần số lấy mẫu)

load: tải file

2 Chuyển đổi tín hiệu trong miền tần số và ngược lại

- Trong Matlab thì biến đổi Fourier tín hiệu liên tục miền thời gian không thể thực hiện một cách chính xác Những sự khác biệt quan trọng giữa biến đổi Fourier rời rạc trong máy tính và biến đổi Fourier liên tục là : dải tần số hữu hạn và các tần số mẫu rời rạc Độ mịn dải tần số của tín hiệu sau khi biến đổi sẽ phụ thuộc vào tần số lấy mẫu của tín hiệu Tần số lấy mẫu càng lớn thì phổ càng mịn

- Ta xét ví dụ trong ở trong Lap 3: Tín hiệu có tần số lấy mẫu là Fs = 8000 Có nghĩa

là dải tần số từ [-4000,4000]Hz Độ phân giải tần số phụ thuộc vào độ dài của các tín hiệu (mà cũng là chiều dài của biểu diễn tần số)

- Đoạn code sau thực hiện cả 2 cách:

>> N = length(x); %Xác định kích thước của x

Trang 12

- Một bộ lọc thông thấp lý tưởng loại bỏ các tần số cao hoàn toàn :

- Một bộ lọc thông thấp thực tế thường có giá trị thấp nhưng không bằng 0 với H(w) ở tần số cao và dần dần giảm độ lớn khi tần số tăng Bộ lọc thông thấp đơn giản nhất(ít hiệu quả nhất) được cho bởi:

- Bộ lọc thông thấp có thể được dùng trong Matlab bằng cách sử dụng phép biến đổi Fourier Phép nhân trong miền tần số là các hoạt động tương tựnhư chập trong miền thời gian Nếu ta có cả hai tín hiệu và bộ lọc ở miền tần số thì ta có thể nhân chúng để tìm được đầu ra của hệ thống:

- Ví dụ về cách sử dụng Matlab để thực hiện một bộ lọc thông thấp với tín hiệu vào là x,các tần số cắt của bộ lọc được biểu diễn bằng hằng số a Ta cần xác định H trong 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 của H

>>plot(w*Fs/N,abs(H)) % w chuyển đổi trở lại Hz

Trang 13

lấy mẫu Fs

>> y = real(ifft(Y));

>>sound(x, Fs) ) % âm thanh gốc

>> sound(y, Fs) % âm thanh được lọc qua thông thấp

- Bộ lọc làm giảm âm thanh của tín hiệu mà khi nghe chỉ có thể sử dụng lệnh sound

mà không dùng được lệnh soundsc tự động chia tỉ lệ

- Chú ý: Đôi khi, bạn có thể khuếch đại tín hiệu để nó có chiều cao giống như tín hiệu ban đầu

>> y = y * (max(abs(x))/max(abs(y)));

4 Bộ lọc thông cao

- Bộ lọc thông cao là bộ lọc chỉ cho phép tín hiệu hoạt động từ tần số cắt của nó đến

vô cùng các tín hiệu tần số thấp nhỏ hơn tần số cắt sẽ được lọc đi

- Một bộ lọc thông cao lý tưởng loại bỏ hoàn toàn các tần số thấp

- Bộ lọc thông cao thực tế thường có giá trị thấp nhưng không bằng 0 với H(w) ở tần

số thấp và dần dần tăng độ lớn khi tần số tăng Mạch lọc thông cao được cho bởi:

- Mạch lọc này có thể thực hiện giống như mạch lọc thông thấp Với a là tần số cắt

II BÀI TẬP

w=(-N/2+1:(N/2))*Fs/N; %vector tần số trung tâm

H=a./(a+i*w); %H nam o trung tam

Hshift=fftshift(H); %H khong nam o trung tam

Y=X.*Hshift'; % loc tin hieu

Trang 16

title('Loc thong cao')

Trang 17

title('Tin hieu goc')

close all;clc;clear all;

load shake;load rainstick;

Trang 19

BÀI THÍ NGHIỆM 4 INVESTIGATION OF ALIASING EFFECTS

(LẤY MẪU) Bài tập 1 :

clc;clear all;close all;

Trang 20

X = fft(x);

F = [-length(X)/2:(length(X)/2)-1]*1000/length(X);

subplot(2,1,2)

plot(F, abs(fftshift(X)));

Ngày đăng: 20/06/2016, 15:09

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w