BÀI GIẢNG MATLAB - Trang 157

153

>> x_noisy = x + randn(size(t)); % Tao tin hieu nhieu

>> plot(t(1:N/2),x_noisy(1:N/2), 'k-', 'linewidth',1), grid on

>> xlabel('t [s]'), ylabel('x'),

>> title('Tin co nhieu')

Tín hiệu nhiễu được vẽ ra như trên hình 7-13.

0

0.5

1

1.5

2

2.5

3

- 10

- 5

0

5

10

t [s]

x

Tin co nhieu

nh 7-13. Tín hiệu có nhiễu trong ba giây đầu tiên

Bây giờ ta sẽ sử dụng phép biển đổi Fourier nhanh ñể phân tích xem trong tín hiệu
nhiễu có chứa những tần số nào. Phép biến đổi Fourier nhanh dựa trên n điểm tín
hiệu được thực hiện bởi lệnh fft(f, n). Để thực hiện ví dụ này, ta soạn một Script
như sau :

% Su dung phan tich Fourier nhanh tim tan so trong tin hieu

Fs = 20; % Tan so lay mau, Fs >= 2 tan so cua tin hieu

T = 1/Fs; % Chu ky lay mau

L = 600; % Chieu dai tin hieu,

t = (0:L-1)*T; % Cac thoi diem lay mau

x = 3*cos(pi*t)+2*cos(3*pi*t)+cos(6*pi*t);

x_noisy = x + randn(size(t)); % Tao tin hieu nhieu

NFFT = 2^nextpow2(L); % Next power of 2 from length of y

N = NFFT; % so diem su dung trong fft, la 2^z

FT = fft(x_noisy, N); % goi ham fft

P = FT.*conj(FT)/N; % cong suat trong tin hieu,

% hay binh phuong bien do

f = Fs/2*linspace(0,1,N/2+1)

plot(f,P(1:N/2+1), 'k-', 'linewidth',1), grid on

xlabel('Hz'), title('Pho cong suat')

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.