Xử lý FFT đạt được


8

Khi chuyển đổi tín hiệu nhiễu qua Fast Fourier Chuyển đổi theo thời gian sang miền tần số, có "Độ lợi xử lý" của FFT tăng khi số lượng thùng tăng lên. Tức là càng nhiều thùng tôi càng giảm độ ồn trong miền freqeuency.

1. Thật ra tôi không hiểu hoàn toàn, từ đâu mà lợi ích này đến từ đâu. Điều này có nghĩa là tôi chỉ cần lấy mẫu tín hiệu với tốc độ lấy mẫu cao hơn để có nhiều thùng hơn, do đó mức tăng xử lý FFT cao hơn?

2. Điều gì về FFT nghịch đảo? Tôi có "Xử lý bị mất" không? Khi bắt đầu trong miền tần số có nghĩa là gì, tôi càng có nhiều mẫu tần số, nhiễu sẽ xuất hiện nhiều hơn trong tín hiệu miền thời gian? Tuy nhiên, điều này sẽ phản trực giác vì điều này cũng sẽ dẫn đến sự biến dạng lớn của tín hiệu khi áp dụng phần đệm (của dữ liệu miền tần số) cho mục đích nội suy miền thời gian.


1
Câu trả lời ngắn: một cách nhìn vào DFT là một bộ lọc băng thông cách đều nhau. Khi bạn tăng số lượng thùng trong DFT của mình, mỗi bộ lọc có băng thông hẹp hơn (và do đó truyền ít tiếng ồn hơn). Nếu bạn đang tìm kiếm tín hiệu băng tần hẹp, bạn phải trả tiền để có chiều rộng thùng DFT gần với tín hiệu băng thông quan tâm. Bằng cách đó, bạn vẫn truyền tín hiệu không thay đổi trong khi cũng truyền ít tiếng ồn nhất có thể. Tôi có thể mở rộng điều này sau nếu tôi có cơ hội.
Jason R

Tôi sẽ đánh giá cao một lời giải thích mở rộng.
Frank


@Frank: Liên kết được cung cấp bởi Seth có giải thích chi tiết hơn một chút. Việc tăng kích thước FFT để "đẩy tầng tạp âm" tương tự như giảm băng thông độ phân giải trên máy phân tích phổ.
Jason R

1
XÁC NHẬN ESCHEW SNR FFT tăng theo số điểm FFT vì rất ĐỊNH NGH SNA của FFT SNR. FFT SNR được định nghĩa là SNR trong một BW bằng với kích thước của BIN tần số và kích thước BIN giảm khi số điểm FFT tăng.
người dùng tài khoản

Câu trả lời:


5

Tôi nghĩ cách dễ nhất để bao bọc một khái niệm là có một ví dụ đơn giản:

% example of FFT of a very noisy sin wave
f0 = 1000;     % sinusoid frequency
Fs = 10000;    % sampling frequency 
n = 0:1/Fs:1; % one second worth of sample index
N = length(n);
SNR = -20;    % signal to noise ratio is -20dB
Pn  = 0.5*10^(-SNR/10); % signal power is 0.5 for sin wave
NFFT = round([N/8 N/4 N/2 N]); % FFT size to see how it effects the gain


%% signal and generation
sx = sin(2*pi*f0*n);
sn = sqrt(Pn)*randn(1, N);
%% adding noise
xn = sx + sn;
%% signal with and w/o noise in time
figure(1);
plot(n(1:100), xn(1:100)); hold on;
plot(n(1:100), x(1:100), 'r');
legend('noisy', 'clean');
%% FFT of different sizes
figure(2); 
Xf = fft(xn, NFFT(4));
plot(Fs*(0:NFFT(4)-1)/NFFT(4), abs(Xf)/N, '.-'); hold on;
Xf = fft(xn, NFFT(3));
plot(Fs*(0:NFFT(3)-1)/NFFT(3), abs(Xf)/N, 'r.-');
Xf = fft(xn, NFFT(2));
plot(Fs*(0:NFFT(2)-1)/NFFT(2), abs(Xf)/N, 'g.-'); 
Xf = fft(xn, NFFT(1));
plot(Fs*(0:NFFT(1)-1)/NFFT(1), abs(Xf)/N, 'k.-');
legend('FFT size = N', 'FFT size = N/2', 'FFT size = N/4', 'FFT size = N/8');

Cốt truyện của làn sóng tội lỗi ồn ào và sạch sẽ trong miền thời gian trông như thế này: Tiếng ồn vs sóng sạch

Các sơ đồ FFT cho các kích thước khác nhau trong miền tần số là: nhập mô tả hình ảnh ở đây

tức là, tăng kích thước FFT có nghĩa là thêm nhiều mẫu tín hiệu trong tính toán, và do đó FFT dễ dàng xác định tần số hơn, vì thông tin tín hiệu được thêm vào, trong khi thông tin nhiễu thì không. Ở đây bạn có thể thấy tín hiệu tiếng ồn sàn "tương đối" đã giảm.

Đối với Fourier ngược, tôi sẽ không nói đó là một mất mát, tôi nói rằng chúng tôi đã trở lại nơi chúng tôi đến.

hth


2
Mặc dù không nhất thiết phải nghiêm ngặt, đây là loại câu trả lời mà OP đang tìm kiếm. Các câu trả lời khác mô tả mức tăng liên tục vốn có trong nhiều triển khai DFT không sai, nhưng chúng không trả lời câu hỏi đã được hỏi. Xem liên kết được cung cấp trong bình luận của Seth về câu hỏi trên.
Jason R

Tôi hoàn toàn không thể đồng ý với tuyên bố "không có ý nghĩa về IFFT, nếu chúng tôi không thực hiện FFT ngay từ đầu." Hãy suy nghĩ về một bộ phân tích mạng vector cung cấp các giá trị miền tần số. Trong trường hợp này, không FFT (chuyển tiếp) được áp dụng một ưu tiên. Do đó, áp dụng FFT nghịch đảo trên các dữ liệu gốc này sẽ dẫn đến "Xử lý bị mất" trong khi chuyển đổi sang miền thời gian?!
Frank

@Frank điều này có nghĩa là trong phổ trải rộng, chúng tôi giới thiệu một tổn thất xử lý tại máy phát, để áp dụng mức tăng xử lý tại máy thu! Cuối cùng, chúng tôi đã không đạt được bất cứ điều gì.
người học

@learner: Phổ trải rộng là một loại ví dụ nhân tạo vì tín hiệu băng tần hẹp là "nhân tạo" lan truyền tại máy phát để đạt được một số lợi ích tại máy thu. Tuy nhiên, khi sử dụng máy phân tích mạng vector, không có bước nào trước khi lấy dữ liệu miền tần số. Do đó, không có nguồn "SNR thoái hóa" nhân tạo nào để có được SNR tại một số điểm khác trong chuỗi xử lý.
Frank

@Frank Trên thực tế, bất cứ khi nào tôi sử dụng bộ phân tích mạng, tôi luôn thực hiện IFFT của quét phổ (3GHz-11GHz), trong trường hợp đó, tôi không thể quan sát thấy mất xử lý IFFT. Tuy nhiên, quan điểm của bạn là hợp lệ. Điều đó khiến tôi nghĩ rằng mức tăng FFT và mất IFFT có liên quan đến các thuộc tính của tín hiệu được xem xét. Hãy xem xét một hàm delta dirac kịp thời, nếu chúng ta thực hiện FFT, thay vì đạt được, chúng ta sẽ bị lỗ. Bạn có đồng ý không?
người học

1

"" Mức tăng xử lý "của FFT tăng khi số lượng thùng tăng lên" chỉ là do vấn đề định nghĩa. FFT là một thuật toán "nhanh" để tính toán DFT. thông thường DFT (và DFT nghịch đảo) được định nghĩa là:

X[k]n=0N1x[n]ej2πnk/N

x[n]=1Nk=0N1X[k]e+j2πnk/N

nhưng nó có thể được định nghĩa là

X[k]1Nn=0N1x[n]ej2πnk/N

x[n]=k=0N1X[k]e+j2πnk/N

và thậm chí có thể được định nghĩa là

X[k]1Nn=0N1x[n]ej2πnk/N

x[n]=1Nk=0N1X[k]e+j2πnk/N

ở dạng thứ hai, không có "mức tăng xử lý" của DFT hay iDFT.


Tôi không hiểu tại sao câu trả lời này bị hạ thấp. Nó không giải quyết phần 2 của câu hỏi, nhưng nó chắc chắn không sai.
Phonon

3
và nó trả lời vấn đề lợi ích của FFT nghịch đảo cũng giống như nó trả lời cho vấn đề lợi ích của FFT chuyển tiếp. cuộc sống là thế.
robert bristow-johnson

1
Đối với "mức tăng xử lý" mà các câu trả lời khác nói về, việc chuẩn hóa là gì không quan trọng. Phần quan trọng là mức độ nhiễu của sàn liên quan đến tín hiệu của bạn.
oystein

vậy @oystein, "mức tăng xử lý" chỉ áp dụng cho tỷ lệ tín hiệu-nhiễu?
robert bristow-johnson

@robert bristow-johnson, vâng, đó là sự hiểu biết của tôi ít nhất. Sẽ không có vấn đề gì nếu bạn chia tỷ lệ kết quả DFT của mình theo , hoặc , vì bạn chia tỷ lệ cả 'tín hiệu' và 'nhiễu'. NN1
oystein

1

Mức tăng xử lý FFT xuất phát từ thực tế là DFT (trong đó FFT đơn giản là triển khai nhanh) là một phép biến đổi tuyến tính không chuẩn hóa. Đây là một câu cửa miệng, vì vậy hãy xem điều này có nghĩa là gì.

Tôi sẽ giả định rằng bạn biết biến đổi tuyến tính là gì. Cụ thể, các vectơ đã cho và và một ma trận chúng ta cóxyA

y=Ax.

DFT chỉ là một sự chuyển đổi như vậy. Thực tế, bạn có thể sử dụng dftmtxlệnh MATLAB để tạo ma trận này cho bạn dựa trên độ dài của vectơ . Trường hợp nàyx

y=DFT(x).

Ma trận này có một số tính chất. Trước hết, đó là một ma trận vuông, có nghĩa là nó có thể đảo ngược (và thực tế là như vậy!). Nó cũng cho chúng ta biết rằng về cơ bản chúng ta đang lấy các thành phần của x và thực hiện thay đổi cơ sở được đưa ra bởi các cột của để có được DFT của nó. Càng xa càng tốt.AA

Bây giờ, hãy đến một số thuộc tính quan trọng hơn. Ma trận là trực giao. Điều này có nghĩa là mọi cột của đều vuông góc với mọi cột khác hoặc theo toán học hơn, là một ma trận đường chéo (bạn có thể phải suy nghĩ một chút về lý do tại sao điều này là đúng). Đây là một tài sản rất tốt, vì chỉ cần hoán vị ma trận cho chúng ta một cái gì đó rất gần với nghịch đảo của nó.AAMộtTMột

Để làm cho mối quan hệ nghịch đảo Transpose này trở nên nghiêm ngặt, chúng tôi muốn ma trận cũng bình thường . Đây là một ma trận có mọi vectơ cột có độ dài 1. Nói cách khác, nếu là cột của , thì Nếu một ma trận vừa trực giao vừa bình thường, chúng ta gọi nó là trực giao và trong trường hợp này , vì vậy là trong thực tế nghịch đảo của . Khéo léo!MộtmộtMộtmộtTmột= =1.MộtTMột= =TôiMộtTMột

Ma trận DFT thông thường (hoặc biến đổi DFT thông thường) là trực giao, nhưng không trực giao. Trong thực tế, nếu là ma trận DFT, sau đó nơi là số cột (hoặc các hàng, nó vuông!) Trong . Để làm cho nó trực giao, chúng ta nên sử dụng thay thế. Nếu bạn nhìn vào nó đủ lâu, bạn sẽ nhận ra rằng chúng ta mở rộng cả hai phép biến đổi thuận và nghịch bằng , chúng ta sẽ thực hiện thêm công việc trong việc thực hiện các phép tính, vì vậy chúng ta thường chỉ chia tỷ lệ theo ở nghịch đảo.DDTD= =NNDDN1N1N

Có những lý do lý thuyết tốt hơn để làm điều đó ở một bên thay vì cả hai. Xem câu trả lời của tôi ở đây để biết thêm thông tin.


1

Độ lợi xử lý của FFT đề cập đến SNR tăng đối với hình sin. Bạn có thể nghĩ về DFT hoặc FFT như một ngân hàng của các bộ lọc phù hợp. Bộ lọc phù hợp sẽ tối đa hóa SNR ở đầu ra. Một cách khác để xem mức tăng xử lý, nếu bạn có hình sin trong nhiễu thời gian tại một SNR nhất định và sau đó lấy FFT và xem công suất Sinsoid so với công suất nhiễu trong thùng FFT (giả sử tần số tương ứng chính xác với Thùng FFT) sau đó bạn sẽ thấy SNR hoặc mức tăng xử lý cao hơn. Bạn có thể nghĩ về FFT như các bộ lọc băng thông và nhiễu trong mỗi ngăn tần số được trải ra so với tín hiệu miền thời gian nơi nhiễu phát ra từ tín hiệu.

Việc xử lý đạt được là do nó kết hợp chặt chẽ các thành phần của hình sin với nhau. Vì vậy, bạn cũng sẽ thấy điều này được gọi là đạt được kết hợp. Sự bổ sung mạch lạc này cũng là lý do tại sao khi bạn có tín hiệu dài hơn, bạn sẽ thu được nhiều mức xử lý hơn, tức là nhiều mẫu được kết hợp chặt chẽ hơn. Theo mạch lạc, tôi có nghĩa là nó giả định rằng bạn có kiến ​​thức về pha của tín hiệu - trong trường hợp này là tần số. Ngoài ra, bạn có thể nghĩ về bộ lọc phù hợp dài hơn là có băng thông hẹp hơn, do đó ít nhiễu hơn qua bộ lọc. Do đó cung cấp cho bạn SNR tốt hơn hoặc xử lý đạt được.

Lưu ý rằng nếu hình sin không khớp chính xác với tần số của thùng FFT, thì vẫn sẽ có một đỉnh ở gần các thùng FFT, nhưng sau đó một số thùng FFT lân cận cũng sẽ có cường độ đáng kể. Sẽ có một đỉnh ở thùng FFT gần nhất nhưng nó sẽ nhỏ hơn mức tăng xử lý. Hiệu ứng này thường được gọi là rò rỉ quang phổ. Bạn có thể sử dụng các cửa sổ để giảm rò rỉ quang phổ, nhưng bạn cũng giảm mức tăng xử lý. Mất trường hợp xấu nhất là khi tín hiệu của bạn nằm chính xác giữa hai tần số bin FFT.

Tôi sẽ đề nghị bạn đọc giấy Harris trên cửa sổ. Nó giải thích rất nhiều chi tiết tôi đang nói về.

Vì vậy, nếu bạn có một hình sin trong tiếng ồn trắng, bạn sẽ có được mức tăng xử lý bằng cách lấy DFT / FFT. Bằng cách sử dụng IFFT / IDFT, bạn sẽ bị mất xử lý vì bạn đang truyền tín hiệu của mình trở lại nhiễu.


-1

"Đạt được" là về kiến ​​thức mong muốn (và dễ nhìn thấy). Nếu bạn chuyển đổi sang miền tần số, bạn sẽ có được kiến ​​thức rõ ràng hơn / có thể nhìn thấy (như có thể nhìn thấy trong biểu đồ đồ họa) về các dải tần số cụ thể, nhưng sẽ không thể nhìn thấy (trong biểu đồ FFT) về thông tin thời gian chính xác. Nếu bạn chuyển đổi trở lại miền thời gian, thì bạn sẽ có được kiến ​​thức rõ ràng hơn về thời gian (thời gian thúc đẩy và thay đổi nhất thời, v.v.), nhưng mất kiến ​​thức hữu hình (nếu bạn vứt bỏ biểu đồ FFT trước đó) về dải tần số mà thời gian đó- dạng sóng miền kích thích.

Không có mức tăng thực tế trong thông tin vốn có trong cả vectơ thời gian hoặc tần số, nhiều khả năng một số mất nhỏ do độ chính xác số trong FFT.

Tăng tốc độ lấy mẫu của tín hiệu đã bị giới hạn băng tần (đã ở dưới Nyquist ở tốc độ mẫu thấp hơn) không thêm thông tin mới (ngoại trừ có thể di chuyển dữ liệu mẫu ra xa khỏi biến dạng của bộ lọc khử răng cưa và phát ra nhiễu lượng tử hóa). Không có gì mới để thêm "tăng".

Nhưng việc tăng tổng thời gian vectơ mẫu (không phải bằng đệm, nhưng với dữ liệu thực tế hơn) có thể thêm thông tin mới, có thể cho phép xử lý "khuếch đại" để giảm mức nhiễu, đặc biệt là tín hiệu đứng yên.

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.