Tại sao cường độ được chuẩn hóa trong quá trình tổng hợp (IDFT), không phải phân tích (DFT)?


17

Trong hầu hết các ví dụ và mã FFT mà tôi đã thấy, đầu ra (cường độ tần số) của hoạt động DFT chuyển tiếp được chia tỷ lệ bằng N - tức là thay vì cho bạn độ lớn của mỗi ngăn tần số, nó mang lại cho bạn độ lớn gấp N lần.

Về mặt vận hành, điều này chỉ đơn giản là vì DFT được tính bằng cách lấy sản phẩm bên trong của tín hiệu với từng sin cơ sở (nghĩa là tương quan không chuẩn hóa). Tuy nhiên, điều đó không trả lời cho câu hỏi triết học về lý do tại sao chúng ta không chia cho N trước khi trả lại đầu ra?

Thay vào đó, hầu hết các thuật toán chia cho N khi tổng hợp lại.

Điều này có vẻ phản trực giác đối với tôi và (trừ khi tôi thiếu một cái gì đó) nó làm cho tất cả các giải thích về DFT rất khó hiểu.

Trong mọi kịch bản tôi có thể mơ, cường độ thực tế (không phải độ lớn * N) là giá trị tôi cần từ một hoạt động DFT và cường độ chuẩn hóa là giá trị tôi muốn nhập vào hoạt động IDFT.

Tại sao DFT không được định nghĩa là DFT / N và IDFT được định nghĩa là một tổng đơn giản của các hình sin có độ lớn chuẩn hóa?


2
Tôi thành thật nghĩ rằng đây là một trong những câu hỏi thú vị nhất từng được hỏi ở đây.
Phonon

Câu trả lời:


9

Cho dù bạn mở rộng quy mô đầu ra của DFT, chuyển tiếp hay nghịch đảo, không liên quan gì đến quy ước hoặc những gì thuận tiện về mặt toán học. Nó có mọi thứ để làm với đầu vào DFT. Cho phép tôi hiển thị một số ví dụ trong đó tỷ lệ là bắt buộc hoặc không bắt buộc đối với cả biến đổi thuận và nghịch.

Phải mở rộng một biến đổi về phía trước bằng 1 / N.

Để bắt đầu, cần phải rõ ràng rằng để phân tích một sóng hình sin đơn giản, độ dài của biến đổi phải không liên quan, nói một cách toán học. Giả sử N = 1024, Freq = 100 và tín hiệu của bạn là:

f (n) = cos (Freq * 2 * Pi * n / N)

Nếu bạn lấy DFT 1024 điểm của f (n), bạn sẽ thấy thùng đó [100] = 512. Nhưng đây không phải là một giá trị có ý nghĩa cho đến khi bạn chia tỷ lệ cho nó bằng N. 512/1024 = 1/2 và tất nhiên, 1/2 còn lại nằm trong phổ âm trong bin [924].

Nếu bạn nhân đôi độ dài của DFT, N = 2048, các giá trị đầu ra sẽ gấp đôi so với DFT 1024 điểm, một lần nữa, làm cho kết quả trở nên vô nghĩa trừ khi chúng ta chia tỷ lệ 1 / N. Độ dài của DFT không phải là một yếu tố trong các loại phân tích này. Vì vậy, trong ví dụ này, bạn phải chia tỷ lệ DFT theo 1 / N.

Không được mở rộng quy mô chuyển đổi.

Bây giờ, giả sử bạn có đáp ứng xung của bộ lọc FIR 32 chạm và muốn biết đáp ứng tần số của nó. Để thuận tiện, chúng tôi sẽ giả sử bộ lọc thông thấp có mức tăng là 1. Chúng tôi biết rằng đối với bộ lọc này, thành phần DC của DFT phải là 1. Và rõ ràng đây sẽ là trường hợp bất kể kích thước của DFT vì thành phần DC đơn giản là tổng của các giá trị đầu vào (tức là tổng các hệ số FIR).

Do đó, đối với đầu vào này, DFT không được chia tỷ lệ 1 / N để có được câu trả lời có ý nghĩa. Đây là lý do tại sao bạn không thể tạo ra một phản ứng thúc đẩy bao nhiêu tùy ý mà không ảnh hưởng đến kết quả của biến đổi.

Sự khác biệt cơ bản giữa hai ví dụ này là gì?

Đáp án đơn giản. Trong trường hợp đầu tiên, chúng tôi đã cung cấp năng lượng cho mọi mẫu đầu vào. Nói cách khác, sóng hình sin đã có mặt cho tất cả 1024 mẫu, vì vậy chúng tôi cần phải điều chỉnh tỷ lệ đầu ra của DFT bằng 1/1024.

Trong ví dụ thứ hai, theo định nghĩa, chúng tôi chỉ cung cấp năng lượng cho 1 mẫu (xung ở n = 0). Phải mất 32 mẫu để xung lực hoạt động thông qua bộ lọc 32 vòi, nhưng độ trễ này không liên quan. Vì chúng tôi đã cung cấp năng lượng cho 1 mẫu, chúng tôi chia tỷ lệ đầu ra của DFT bằng 1. Nếu một xung được xác định bằng 2 đơn vị năng lượng thay vì 1, chúng tôi sẽ chia tỷ lệ đầu ra bằng 1/2.

Không được quy mô một biến đổi nghịch đảo.

Bây giờ hãy xem xét một DFT nghịch đảo. Như với DFT chuyển tiếp, chúng tôi phải xem xét số lượng mẫu chúng tôi đang cung cấp năng lượng. Tất nhiên, chúng ta phải cẩn thận hơn một chút ở đây vì chúng ta phải điền đầy đủ các thùng tần số dương và âm một cách thích hợp. Tuy nhiên, nếu chúng ta đặt một xung (tức là 1) vào hai thùng thích hợp, thì kết quả đầu ra của DFT nghịch đảo sẽ là sóng cosine với biên độ 2 cho dù chúng ta sử dụng bao nhiêu điểm trong DFT nghịch đảo.

Do đó, như với DFT chuyển tiếp, chúng tôi không mở rộng quy mô đầu ra của DFT nếu đầu vào là một xung.

Phải quy mô một biến đổi nghịch đảo.

Bây giờ hãy xem xét trường hợp bạn biết đáp ứng tần số của bộ lọc thông thấp và muốn thực hiện DFT nghịch đảo để có được đáp ứng xung của nó. Trong trường hợp này, vì chúng tôi đang cung cấp năng lượng tại tất cả các điểm, chúng tôi phải chia tỷ lệ đầu ra của DFT bằng 1 / N để có được câu trả lời có ý nghĩa. Điều này không hoàn toàn rõ ràng vì các giá trị đầu vào sẽ phức tạp, nhưng nếu bạn làm việc qua một ví dụ, bạn sẽ thấy điều này là đúng. Nếu bạn không chia tỷ lệ 1 / N, bạn sẽ có các giá trị đáp ứng xung cực đại theo thứ tự N, điều này không thể xảy ra nếu mức tăng là 1.

Bốn tình huống tôi vừa nêu chi tiết là các ví dụ về điểm cuối trong đó rõ ràng làm thế nào để mở rộng quy mô đầu ra của DFT. Tuy nhiên, có rất nhiều vùng màu xám giữa các điểm cuối. Vì vậy, hãy xem xét một ví dụ đơn giản khác.

Giả sử chúng ta có tín hiệu sau, với N = 1024, Freq = 100:

f(n) = 6 * cos(1*Freq * 2*Pi * n/N)  n = 0 - 127
f(n) = 1 * cos(2*Freq * 2*Pi * n/N)  n = 128 - 895
f(n) = 6 * cos(4*Freq * 2*Pi * n/N)  n = 896 - 1023

Miền thời gian

Lưu ý sự khác biệt về biên độ, tần số và thời lượng cho ba thành phần. Thật không may, DFT của tín hiệu này sẽ hiển thị cả ba thành phần ở cùng mức công suất, mặc dù thành phần thứ 2 có 1/36 mức công suất của hai thành phần còn lại.

Tên miền Freq không giới hạn

Thực tế là cả ba thành phần đang cung cấp cùng một lượng năng lượng là điều hiển nhiên, điều này giải thích kết quả DFT, nhưng có một điểm quan trọng cần được thực hiện ở đây.

Nếu chúng ta biết thời lượng cho các thành phần tần số khác nhau, thì chúng ta có thể chia tỷ lệ các thùng tần số khác nhau cho phù hợp. Trong trường hợp này, chúng tôi sẽ làm điều này để chia tỷ lệ chính xác đầu ra của DFT: bin [100] / = 128; thùng [200] / = 768; thùng [400] / = 128;

Điều này đưa tôi đến điểm cuối cùng của tôi; nói chung, chúng tôi không biết một thành phần tần số cụ thể có mặt ở đầu vào DFT của chúng tôi trong bao lâu, vì vậy chúng tôi không thể thực hiện việc chia tỷ lệ này. Tuy nhiên, nói chung, chúng tôi cung cấp năng lượng cho mọi điểm mẫu, đó là lý do tại sao chúng ta nên chia tỷ lệ DFT chuyển tiếp lên 1 / N khi phân tích tín hiệu.

Để làm phức tạp vấn đề, chúng tôi gần như chắc chắn sẽ áp dụng một cửa sổ cho tín hiệu này để cải thiện độ phân giải phổ của DFT. Do các thành phần tần số thứ nhất và thứ ba nằm ở đầu và cuối của tín hiệu, chúng bị suy giảm 27 dB trong khi thành phần trung tâm bị suy giảm chỉ 4 dB (cửa sổ Hanning).

Phổ cửa sổ

Để rõ ràng, đầu ra của DFT có thể là một đại diện khá kém của đầu vào, được chia tỷ lệ hoặc không.

Trong trường hợp DFT nghịch đảo, thường là một vấn đề toán học thuần túy, trái ngược với phân tích tín hiệu không xác định, đầu vào của DFT được xác định rõ ràng, vì vậy bạn biết cách chia tỷ lệ đầu ra.

Khi phân tích tín hiệu bằng máy phân tích phổ, analog hoặc FFT, các vấn đề tương tự nhau. Bạn không biết sức mạnh của tín hiệu được hiển thị trừ khi bạn cũng biết chu kỳ nhiệm vụ của nó. Nhưng ngay cả sau đó, cửa sổ, nhịp, tốc độ quét, lọc, loại máy dò và các yếu tố khác đều hoạt động để đạt được kết quả.

Cuối cùng, bạn phải khá cẩn thận khi di chuyển giữa các miền thời gian và tần số. Câu hỏi bạn hỏi về nhân rộng rất quan trọng, vì vậy tôi hy vọng tôi đã nói rõ rằng bạn phải hiểu đầu vào của DFT để biết cách chia tỷ lệ đầu ra. Nếu đầu vào không được xác định rõ ràng, đầu ra của DFT phải được xem xét với sự hoài nghi lớn, cho dù bạn có mở rộng quy mô hay không.


Tôi đã chọn câu trả lời này cho tính toàn diện và nhiều thông tin chi tiết, nhưng cũng xem câu trả lời tuyệt vời của Phonon để có cái nhìn tổng quan trực quan.
bryhoyt

9

Tôi có thể nghĩ ra một số lý do liên quan đến các vấn đề chính xác về tính toán, nhưng điều đó có lẽ sẽ không công bằng vì về mặt toán học, chúng tôi xác định nó theo cùng một cách cho dù thế nào, và toán học không biết vấn đề chính xác.

Đây là của tôi về nó. Về mặt khái niệm, hãy suy nghĩ về ý nghĩa của DFT trong ý nghĩa xử lý tín hiệu, không chỉ đơn thuần là một biến đổi. Trong trường hợp này, đối với tôi, việc áp dụng DFT cho tín hiệu và hệ thống khiến chúng ta muốn thấy các kết quả khác nhau.

Ví dụ: hãy áp dụng DFT cho tín hiệu giá trị không đổi 1. Chúng ta cũng giả sử rằng tín hiệu này có độ dài hữu hạn và dài 16 vòi. Chúng ta muốn gì từ DFT trong trường hợp này? Rõ ràng, chúng tôi muốn nó cho chúng tôi biết biên độ của từng thành phần tần số của tín hiệu. Rõ ràng, tín hiệu của chúng ta có một thành phần duy nhất là tần số 0 và biên độ 1. Nhưng DFT cho chúng ta một đỉnh đơn ở bin 0 và chiều cao 16! Trong trường hợp này, sự thất vọng của bạn với định nghĩa về DFT có ý nghĩa hoàn hảo. Chúng ta nên mở rộng các hệ số phân tích, không phải hệ số tổng hợp.

Được rồi, bây giờ hãy phân tích cùng một mảng số, cụ thể là chuỗi 16 số của chúng tôi, nhưng trong trường hợp này là một hệ thống. Về mặt khái niệm chúng ta muốn đáp ứng tần số của một hệ thống có nghĩa là gì? Hầu hết mọi người sẽ nói rằng đó là biên độ của đầu ra so với đầu vào, tức là hàm truyền. Trong trường hợp này, giả sử rằng chúng ta cung cấp tín hiệu DC biên độ thống nhất vào hệ thống của chúng tôi và xem xét biên độ của đáp ứng trạng thái ổn định. Chà, kết hợp hai tín hiệu 16 vòi không đổi với nhau và bạn có được một đoạn dốc thoáng qua theo sau là đầu ra trạng thái ổn định là tín hiệu DC có biên độ (kiểm tra điều này!) 16! Trong trường hợp này, định nghĩa của chúng tôi về biến đổi phân tích không chia tỷ lệ có ý nghĩa hơn so với khác.

Vào cuối ngày, tất cả là về những gì bạn đang cố gắng thể hiện. Có nhiều lý do để xem xét định nghĩa trung tâm hệ thống này của DFT.

Tuy nhiên, nếu chúng ta xem xét phép biến đổi từ góc độ toán học thuần túy, thì cả hai đều không có ý nghĩa nhất, vì chúng ta có thể biến đổi này thành trực giaođơn nhất bằng cách nhân rộng cả hai phép biến đổi phân tích và tổng hợp bằng1(N) . Điều này cũng sẽ bảo toàn sức mạnh của cả biểu diễn thời gian và tần số sao cho định lý của Parseval luôn giữ.


Câu trả lời tuyệt vời, cảm ơn! Tôi đã chọn câu trả lời của người dùng5108_Dan cho tính toàn diện, nhưng câu trả lời của bạn chắc chắn đã giúp cung cấp trực giác tốt nhất.
bryhoyt

7

Trên thực tế, có 3 cách khác nhau để đặt các yếu tố tỷ lệ là phổ biến trong các triển khai FFT / IFFT khác nhau và khác nhau: 1.0 tiến và 1.0 / N trở lại, 1.0 / N tiến và 1.0 trở lại và 1.0 / sqrt (N) cả tiến và lùi.

Tất cả 3 biến thể tỷ lệ này đều cho phép một chuyến đi khứ hồi IFFT (FFT (x)), sử dụng các hàm trig sin () và cos () chung cho các yếu tố twiddle, là một biến đổi nhận dạng.

Lưu ý rằng việc bảo toàn cường độ hình sin trên FFT phía trước không bảo toàn tổng năng lượng (như trong định lý của Parseval). Chọn một trong những bạn thích.

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.