Tại sao FFT bào được nhân đôi?


36

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

1Hz

FFT ở trên

fft

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

nhập mô tả hình ảnh ở đây

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

Một câu hỏi tương tự đã được trả lời ở đây: dsp.stackexchange.com/questions 43266 / Giả
pichenettes

Nhưng đây là đặc biệt về tính đối xứng (tôi tin rằng nó được gọi là đối xứng Hermetian?) Của tín hiệu.
bobobobo

Đối với tín hiệu thực thuần F (k) = sym (F (Nk)), đây là lý do tại sao biến đổi Fourier của tín hiệu thực thuần là đối xứng.
WebMonster

Hãy tự hỏi: kết quả bạn mong đợi là gì nếu tín hiệu của bạn là 1 + cos (2 * pi t) ... Và 1 + i cos (2 * pi t) ... Và 1 + i sin (2 * pi * t) ...
pichenettes

2
Bởi vì một biến đổi Fourier chia tín hiệu thành các số mũ phức tạp và sóng hình sin là tổng của 2 số mũ phức tạp. dsp.stackexchange.com/a/449/29
endolith

Câu trả lời:


39

Các tín hiệu thực được "nhân đôi" trong nửa thực và âm của biến đổi Fourier vì bản chất của biến đổi Fourier. Biến đổi Fourier được định nghĩa như sau-

H(f)=h(t)ej2πftdt

Về cơ bản, nó tương quan tín hiệu với một loạt các hình sin phức tạp, mỗi hình có tần số riêng. Vì vậy, những hình sin phức tạp trông như thế nào? Hình dưới đây minh họa một hình sin phức tạp.

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

"Nút chai" là hình sin phức tạp xoay theo thời gian, trong khi hai hình sin đi theo nó là các thành phần thực và ảo được trích xuất của hình sin phức tạp. Người đọc sắc sảo sẽ lưu ý rằng các thành phần thực và ảo là giống hệt nhau, chỉ có chúng lệch pha nhau 90 độ ( ). Vì chúng lệch pha 90 độ nên chúng trực giao và có thể "bắt" bất kỳ thành phần nào của tín hiệu ở tần số đó.π2

Mối quan hệ giữa hàm mũ và cosin / sin được đưa ra theo công thức của Euler -

ejx=cos(x)+jsin(x)

H(f)=h(t)ej2πftdt=h(t)(cos(2πft)jsin(2πft))dt

H(f)=h(t)(cos(2π(f)t)jsin(2π(f)t))dt=h(t)(cos(2πft)+jsin(2πft))dt

So sánh phiên bản tần số âm với phiên bản tần số dương cho thấy cosin giống nhau trong khi sin bị đảo ngược. Tuy nhiên, chúng vẫn lệch pha nhau 90 độ, cho phép chúng bắt bất kỳ thành phần tín hiệu nào ở tần số (âm) đó.

Bởi vì cả hai hình sin tần số dương và âm đều lệch pha 90 độ và có cùng độ lớn, cả hai sẽ phản ứng với tín hiệu thực theo cùng một cách. Hay đúng hơn, mức độ phản ứng của họ sẽ giống nhau, nhưng giai đoạn tương quan sẽ khác nhau.

EDIT: Cụ thể, tương quan tần số âm là liên hợp của tương quan tần số dương (do thành phần hình sin tưởng tượng ngược) cho các tín hiệu thực. Theo thuật ngữ toán học, đây là, như Dilip đã chỉ ra, như sau-

H(f)=[H(f)]

Một cách khác để suy nghĩ về nó:

Các thành phần tưởng tượng chỉ có vậy .. Hình ảnh! Chúng là một công cụ, cho phép sử dụng một mặt phẳng phụ để xem mọi thứ trên và thực hiện nhiều xử lý tín hiệu số (và tương tự), nếu không dễ dàng hơn nhiều so với sử dụng các phương trình vi phân!

5i


Câu trả lời hay - mặc dù vậy, tôi không ở trên tàu với "Bởi vì chúng giống nhau, bất cứ thứ gì tương quan với nhau, cái kia cũng sẽ có cùng độ lớn và độ dịch pha 90 độ.". Tôi biết những gì bạn đang cố gắng nói, tuy nhiên (như bạn biết), một sin tương quan với một sin (điểm 1), nhưng hoàn toàn không tương quan với một cosine, (điểm 0). Chúng là cùng một tín hiệu, nhưng với các giai đoạn khác nhau.
Spacey

Bạn đúng. Có một vấn đề nghiêm trọng hơn nữa. Tôi sẽ sửa nó sau.
Jim Clay

Sẽ thật tuyệt nếu bạn có thể chỉnh sửa câu trả lời của mình để phản ứng nhanh hơn với câu hỏi về DFT (mặc dù nó nói FFT trong tiêu đề) thay vì đưa ra lý thuyết chung về các biến đổi Fourier.
Dilip Sarwate

@DilipSarwate Mục tiêu của tôi là giúp người hỏi hiểu và tôi nghĩ cách tiếp cận của tôi là tốt nhất cho điều đó. Tôi đã nêu lên câu trả lời của bạn, mặc dù, để làm toán rời rạc.
Jim Clay

H(f)=[H(f)]|H(f)|=|H(f)|x(t)là một tín hiệu có giá trị thực và đây là "sự phản chiếu" mà OP đã hỏi về. Nói cách khác, tôi yêu cầu bạn chỉnh sửa câu trả lời của mình để phản ứng nhanh hơn với câu hỏi thực sự đã hỏi (như tôi đã yêu cầu trong bình luận trước đây của tôi).
Dilip Sarwate

20

N101NN2k4k để tăng tốc tính toán DFT thông qua FFT.

x=(x[0],x[1],x[2],,x[N1])NX=(X[0],X[1],X[2],,X[N1])

X[m]=n=0N1x[n](exp(j2πmN))n,m=0,1,,N1
j=1XxxX[0]=n=0N1x[n]Nexp(jπ)=1
X[N2]=n=0N1x[n](exp(j2πN/2N))n=n=0N1x[n](1)n
NXx m1mN1
X[m]=n=0N1x[n](exp(j2πmN))nX[Nm]=n=0N1x[n](exp(j2πNmN))n=n=0N1x[n](exp(j2π+j2πmN))n=n=0N1x[n](exp(j2πmN))n=(X[m])
1mN1X[Nm]=(X[m])m=N/2NX[N/2]=(X[N/2])X[N/2]

m(Nm)

1


x11

x[n]=1+sin(2π(0.01n)), 0n100
x[0]=x[100]=1101
X[m]=n=0100(1+sin(2π(n100)))(exp(j2πm101))n
100101X[m]2m99t100t=0,0.01,0.02,,0.99
x[n]=1+sin(2π(0.01n)), 0n99.
X[m]=n=099(1+sin(2π(n100)))(exp(j2πm100))n,
X=(100,50j,0,0,,0,50j)0n99
x[n]=1100m=099X[m](exp(j2πn100))m=1100[10050jexp(j2πn100)1+50j(exp(j2πn100))99]=1+12j[exp(j2πn100)exp(j2πn100)]=1+sin(2π(0.01n))

Vì vậy, có thể nói từ FFT nếu tín hiệu là định kỳ hay không ?
hiển thị

@displayname Đó là một câu hỏi riêng biệt nên được hỏi theo cách riêng của mình (và có lẽ đã được hỏi và trả lời rồi).
Dilip Sarwate

Khi tôi cẩn thận rút ra các thùng đối xứng liên hợp [Bằng cách viết 0 + 0i vào chúng] và tái tạo tín hiệu miền thời gian bằng ifft, cường độ của tín hiệu miền thời gian được tạo lại đã giảm một nửa. Điều này là tự nhiên hay nó là một vấn đề dụng cụ? Tôi quan tâm đến việc chuẩn hóa đầu ra FFT và đảo ngược nó sau iFFT.
Raj

14

Lưu ý rằng kết quả FFT được nhân đôi (như đối xứng liên hợp) chỉ khi dữ liệu đầu vào là có thật.

Đối với dữ liệu đầu vào thực sự nghiêm ngặt, hai hình ảnh phản chiếu liên hợp trong kết quả FFT sẽ loại bỏ các phần ảo của bất kỳ hình sin phức tạp nào, và do đó tổng hợp thành một hình sin thực sự (ngoại trừ nhiễu tròn số nhỏ), do đó khiến bạn có biểu hiện nghiêm ngặt sóng hình sin thực.

Nếu kết quả FFT không được nhân đôi, nó sẽ biểu thị dạng sóng có các giá trị phức tạp (các thành phần tưởng tượng khác không), không phải là thứ gì đó thực sự có giá trị.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.