MATLAB cơ bản : Chuỗi Fourier & Biến Đổi Fourier

Lu ROm

Administrator
Staff member
25 Tháng bảy 2014
481
119
43
32
One piece
vimach.net
1.1. Chuỗi Fourier
- Chuỗi Fourier (được đặt tên theo nhà toán học Joseph Fourier) của một hàm tuần hoàn là một cách biểu diễn hàm đó dưới dạng tổng của các hàm tuần hoàn có dạng ejnx. Chuỗi Fourier là việc mở rộng trực giao của tín hiệu tuần hoàn với chu kì T0.Tín hiệu tuần hoàn x(t) với chu kì T0 có thể được biểu diễn như sau :
1.png

- Với xn được gọi là hệ số Fourier của tín hiệu x(t). Hệ số xn được tính như sau :
2.png

- Loại chuỗi Fourier này được gọi chuỗi Fourier hàm mũ. Tần số f0=1/T0 được gọi là tần số cơ bản của tín hiệu. Sóng thứ n có tần số fn=nf0.
- Nếu x(t) là tín hiệu tuần hoàn giá trị thực thì tính chất liên hợp phức được thỏa mãn. Điều này có nghĩa x-n=xn* với * là biểu thị của liên hợp phức. Ta có thể tính được hệ số âm bằng cách lấy liên hợp phức của hệ số dương. Dựa theo kết quả này , ta có thể thấy được :
3.png

1.2. Biến đổi Fourier
- Biến đổi Fourier là việc mở rộng của chuỗi Fourier cho một tín hiệu bất kì. Biến đổi Fourier của tín hiệu x(t), kí hiệu là X(f) được định nghĩa :
4.png

- Ngược lại , biến đổi Fourier ngược được định nghĩa :
5.png

- Nếu x(t) là tín hiệu thực thì X(f) thỏa mãn tính chất liên hợp phức :
6.png

2. Lab work
2.1. Chuỗi Fourier

- Các hàm hữu ích trong MATLAB :
Ø exp(n) : hàm e mũ n
Ø fft(x,N0) : hàm biến đổi fourier nhanh của tín hiệu x
Ø length(): tính độ dài của ma trận hoặc vector
Ø conj : tính liên hợp phức của một số
Ø abs(x) : lấy giá trị tuyệt đối của x nếu x là số thực , lấy độ lớn của x nếu x là số phức
Ø angle: tính pha theo radian của ma trận với các phần tử phức
Ø stem: vẽ tín hiệu rời rạc
Ø figure : đặt tên cho form
- Code minh họa dưới đây trình này cách sử dụng hàm fft để áp dụng đối với hệ số Fourier lớn :
7.png

- Tưởng tượng có một tín hiệu tuần hoàn x(t). Tính toán và vẽ đồ thị của tín hiệu x(t) = e-t/2 với t Î[0,p]. Sử dụng hàm biến đổi Fourier nhanh (FFT) trong MATLAB. Triển khai tín hiệu x(t) với số lượng sóng N0 cần sử dụng là 32, chu kì T0 = p , bước nhảy ts=T0/N0.
Code:

Mã:
t0 = pi
n0 = 32
t = [0:t0/n0:t0]
x = exp(-t/2)
subplot(2,1,1)
plot(t,x)
title('Do thi trong mien thoi gian')
xlabel('Truc t')
ylabel('x(t)')
grid on
subplot(2,1,2)
X=fft(x)
stem(X)
title('do thi trong mien tan so')
xlabel('truc f')
ylabel('X(f)')
grid on
Kết quả :
8.png

2.2. Biến đổi Fourier
- Tín hiệu x1(t) và x2(t) được miêu tả như sau :
9.png

++Vẽ đồ thị của 2 tín hiệu trên trên miền tần số trong MATLAB.
- Yêu cầu : vẽ luôn tín hiệu trên miền thời gian. Trục x chứa 100 điểm và điểm bắt đầu là -5 đến 5.
- Tín hiệu x1(t)
Code :
Mã:
t=-5:0.1:5
x=zeros(1, length(t))
for k=1:length(t)
  if (t(k)>=-1&& t(k)<=0)
  x(k)=t(k)+1;
  elseif(t(k)>0&& t(k)<=1)
  x(k)=1;
  else x(k)=0;
  end
end
subplot(2,1,1)
plot(t,x)
title('do thi trong mien thoi gian')
xlabel('truc t')
ylabel('x(t)')
subplot(2,1,2)
X=fft(x)
stem (X)
title('do thi trong mien tan so')
xlabel('truc f')
ylabel('X(f)')
grid on
Kết quả :
10.png

- Tín hiệu x2(t)
Code :
Mã:
t=-5:0.1:5
x=zeros(1, length(t))
for k=1:length(t)
  if (t(k)>=0 && t(k)<=1)
  x(k)=t(k);
  elseif(t(k)>1 && t(k)<=2)
  x(k)=1;
  else x(k)=0;
  end
end
subplot(2,1,1)
plot(t,x)
title('do thi trong mien thoi gian')
xlabel('truc t')
ylabel('x(t)')
subplot(2,1,2)
X=fft(x)
stem (X)
title('do thi trong mien tan so')
xlabel('truc f')
ylabel('X(f)')
grid on
Kết quả :
11.png

- Chuyển sang miền tần số của các tín hiệu dưới đây :
13.png

- Tín hiệu x1(t) :
Code :
Mã:
t=-5:0.1:5
x=zeros(1, length(t))
for k=1:length(t)
  if (t(k)>=-3&&t(k)<=3)
  x(k)=1;
  else x(k)=0;
  end
end
subplot(2,1,1)
plot(t,x)
title('do thi trong mien thoi gian')
xlabel('truc t')
ylabel('x(t)')
subplot(2,1,2)
X=fft(x)
stem (X)
title('do thi trong mien tan so')
xlabel('truc f')
ylabel('X(f)')
grid on
Kết quả :
14.png

- Tín hiệu x2(t) :
Code :
Mã:
t=-5:0.1:5
x=zeros(1, length(t))
for k=1:length(t)
  if (t(k)>=-1 &&t(k)<=1)
  x(k)=1;
  else x(k)=0;
  end
end
subplot(2,1,1)
plot(t,x)
title('do thi trong mien thoi gian')
xlabel('truc t')
ylabel('x(t)')
subplot(2,1,2)
X=fft(x)
stem (X)
title('do thi trong mien tan so')
xlabel('truc f')
ylabel('X(f)')
grid on
Kết quả :
15.png


Nhận xét : Biến đổi Fourier là phân tích các hệ thống hoặc biểu diễn các hệ thống từ miền thời gian sang miền tần số hoặc ngược lại.
Ý nghĩa chuổi Fourier: dùng để phân tích được sự phân bố năng lượng của tín hiệu và qua phân tích phổ thì ta biết được năng lượng tập trung chủ yếu ở tần số thấp. Từ đó có thể đưa ra các phương pháp thiết kế bộ lọc thích hợp để lấy được năng lượng của tín hiệu tối ưu nhất.