Nếu bạn thực hiện một biểu đồ FFT của một tín hiệu đơn giản, như:
t = 0:0.01:1 ;
N = max(size(t));
x = 1 + sin( 2*pi*t ) ;
y = abs( fft( x ) ) ;
stem( N*t, y )
Hình sin 1Hz + DC
FFT ở trên
Tôi hiểu rằng số trong thùng thứ nhất là "có bao nhiêu DC" trong tín hiệu.
y(1) %DC
> 101.0000
Số trong thùng thứ hai phải là "bao nhiêu chu kỳ trên toàn bộ tín hiệu" có:
y(2) %1 cycle in the N samples
> 50.6665
Nhưng đó không phải là 101! Đó là khoảng 50,5.
Có một mục khác ở cuối tín hiệu fft, có độ lớn bằng nhau:
y(101)
> 50.2971
Thế là 50,5 nữa.
Câu hỏi của tôi là, tại sao FFT được nhân đôi như thế này? Tại sao nó không phải là 101 in y(2)
(tất nhiên điều đó có nghĩa là, tất cả 101 thùng tín hiệu của bạn có hình sin 1 Hz trong đó?)
Nó sẽ chính xác để làm:
mid = round( N/2 ) ;
% Prepend y(1), then add y(2:middle) with the mirror FLIPPED vector
% from y(middle+1:end)
z = [ y(1), y( 2:mid ) + fliplr( y(mid+1:end) ) ];
stem( z )
Lật và bổ trợ nửa sau của vectơ FFT
Bây giờ tôi nghĩ, phần được nhân đôi ở phía bên tay phải được thêm vào một cách chính xác, mang lại cho tôi "tất cả 101 thùng FFT mong muốn chứa một hình sin 1Hz"
>> z(2)
ans =
100.5943