Đầu ra của FFT trong Python là gì?
# Ví dụ Python - Biến đổi Fourier sử dụng numpy. phương pháp fft nhập numpy dưới dạng np nhập matplotlib. pyplot làm máy vẽ # Cần bao nhiêu điểm thời gian i,e. , Tần số lấy mẫu tần suất lấy mẫu = 100; # Tại các khoảng thời gian điểm thời gian được lấy mẫu samplingInterval = 1 / samplingFrequency; # Bắt đầu khoảng thời gian của các tín hiệu beginTime = 0; # Khoảng thời gian kết thúc của các tín hiệu endTime = 10; # Tần số của các tín hiệu signal1Frequency = 4; signal2Frequency = 7; # Thời điểm thời gian = np. sắp xếp (thời gian bắt đầu, thời gian kết thúc, thời gian lấy mẫu); # Tạo hai sóng hình sin biên độ1 = np. tội lỗi(2*np. pi*tín hiệu1Tần số*thời gian) biên độ2 = np. tội lỗi(2*np. pi*tín hiệu2Tần số*thời gian) # Tạo ô phụ hình, trục = máy vẽ. ô con(4, 1) kẻ vẽ đồ thị. subplots_adjust(hspace=1) # Biểu diễn miền thời gian cho sóng hình sin 1 trục[0]. set_title('Sóng sin tần số 4 Hz') trục[0]. biểu đồ (thời gian, biên độ1) trục[0]. set_xlabel('Thời gian') trục[0]. set_ylabel('Biên độ') # Biểu diễn miền thời gian cho sóng hình sin 2 trục[1]. set_title('Sóng sin tần số 7 Hz') trục[1]. biểu đồ (thời gian, biên độ2) trục[1]. set_xlabel('Thời gian') trục[1]. set_ylabel('Biên độ') # Thêm sóng hình sin biên độ = biên độ1 + biên độ2 # Biểu diễn miền thời gian của sóng hình sin tổng hợp trục[2]. set_title('Sóng sin đa tần số') trục[2]. cốt truyện (thời gian, biên độ) trục[2]. set_xlabel('Thời gian') trục[2]. set_ylabel('Biên độ') # Biểu diễn miền tần số FourierTransform = np. fft. fft(biên độ)/len(biên độ) # Bình thường hóa biên độ FourierTransform = FourierTransform[range(int(len(amplitude)/2))] # Loại trừ tần số lấy mẫu tpCount = len(biên độ) giá trị = np. arange(int(tpCount/2)) thời gian Khoảng thời gian = đến Đếm/Tần suất lấy mẫu tần số = giá trị/thời gian # Biểu diễn miền tần số trục[3]. set_title('Biến đổi Fourier mô tả các thành phần tần số') trục[3]. cốt truyện (tần số, abs (bốn biến đổi)) trục[3]. set_xlabel('Tần suất') trục[3]. set_ylabel('Biên độ') kẻ vẽ đồ thị. chỉ() Vì lý do lịch sử, hầu hết các triển khai đều trả về một mảng có tần số thay đổi từ thấp đến cao đến thấp (xem phần giải thích thêm về tần số). Ví dụ: khi chúng ta thực hiện phép biến đổi Fourier thực của một tín hiệu gồm tất cả các đơn vị, một đầu vào không có biến thể và do đó chỉ có thành phần Fourier không đổi, chậm nhất (còn được gọi là âDC,â hoặc Dòng điện một chiều,
array([ 10.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.-0.j, 0.-0.j, 0.-0.j, 0.-0.j]) Khi chúng tôi thử FFT trên tín hiệu thay đổi nhanh chóng, chúng tôi thấy thành phần tần số cao xuất hiện
Applying FFT to [-1. 1. -1. 1. -1. 1. -1. 1. -1. 1.] array([ 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, -10.+0.j, 0.-0.j, 0.-0.j, 0.-0.j, 0.-0.j]) Lưu ý rằng FFT trả về một phổ phức, trong trường hợp đầu vào thực, là đối xứng liên hợp (i. e. , đối xứng trong phần thực và phản đối xứng trong phần ảo)
Real part: [ 45. 7.09 -12.24 -4.09 -7.76 -1. -7.76 -4.09 -12.24 7.09] Imaginary part: [ 0. -10.96 -1.62 12.03 6.88 0. -6.88 -12.03 1.62 10.96] (Và, một lần nữa, nhớ lại rằng thành phần đầu tiên là array([ 10.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.-0.j, 0.-0.j, 0.-0.j, 0.-0.j])4. ) Hàm array([ 10.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.-0.j, 0.-0.j, 0.-0.j, 0.-0.j])5 cho chúng tôi biết tần số nào chúng tôi đang xem xét cụ thể
array([ 0. , 0.1, 0.2, 0.3, 0.4, -0.5, -0.4, -0.3, -0.2, -0.1]) Kết quả cho chúng tôi biết rằng thành phần tối đa của chúng tôi xảy ra ở tần số 0. 5 chu kỳ mỗi mẫu. Điều này phù hợp với đầu vào, trong đó chu kỳ trừ một cộng một lặp lại sau mỗi mẫu thứ hai Đôi khi, thật thuận tiện khi xem quang phổ được tổ chức hơi khác một chút, từ âm cao đến âm thấp đến dương cao (hiện tại, chúng ta sẽ không đi sâu vào khái niệm tần số âm, ngoài việc nói một giá trị thực . Chúng tôi cải tổ lại phổ bằng cách sử dụng hàm array([ 10.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.-0.j, 0.-0.j, 0.-0.j, 0.-0.j])6 Hãy kiểm tra các thành phần tần số trong một hình ảnh nhiễu (). Lưu ý rằng, mặc dù một hình ảnh tĩnh không có thành phần thay đổi theo thời gian, nhưng các giá trị của nó thay đổi theo không gian. DFT áp dụng như nhau cho cả hai trường hợp Đầu tiên, tải và hiển thị hình ảnh
array([ 10.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.-0.j, 0.-0.j, 0.-0.j, 0.-0.j])0 Không điều chỉnh màn hình của bạn. Hình ảnh bạn đang thấy là thật, mặc dù bị biến dạng rõ ràng bởi thiết bị đo lường hoặc thiết bị truyền dẫn Để kiểm tra quang phổ của hình ảnh, chúng tôi sử dụng array([ 10.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.-0.j, 0.-0.j, 0.-0.j, 0.-0.j])7 (thay vì array([ 10.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.-0.j, 0.-0.j, 0.-0.j, 0.-0.j])8) để tính toán DFT, vì nó có nhiều hơn một chiều. FFT 2D tương đương với việc lấy FFT 1D qua hàng rồi qua cột hoặc ngược lại array([ 10.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.-0.j, 0.-0.j, 0.-0.j, 0.-0.j])1 Một lần nữa, chúng tôi lấy nhật ký của phổ để nén phạm vi giá trị, trước khi hiển thị array([ 10.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.-0.j, 0.-0.j, 0.-0.j, 0.-0.j])2 Lưu ý các giá trị cao xung quanh gốc (giữa) của quang phổ—các hệ số này mô tả tần số thấp hoặc các phần mịn của hình ảnh, một khung vẽ mờ của ảnh. Các thành phần tần số cao hơn, trải rộng khắp quang phổ, lấp đầy các cạnh và chi tiết. Đỉnh xung quanh tần số cao hơn tương ứng với tiếng ồn định kỳ Từ bức ảnh, chúng ta có thể thấy rằng nhiễu (tạo tác phép đo) có tính chu kỳ cao, vì vậy chúng tôi hy vọng sẽ loại bỏ nó bằng cách loại bỏ các phần tương ứng của quang phổ () Đầu ra của một FFT là gì?Những tần số này thực sự đại diện cho tần số của hai sóng hình sin tạo ra tín hiệu. Đầu ra của phép biến đổi Fourier không gì khác hơn là chế độ xem miền tần số của tín hiệu miền thời gian ban đầu .
Hàm FFT trả về cái gì?Hàm FFT trả về kết quả bằng phép biến đổi Fourier rời rạc, phức tạp của Mảng . Kết quả của hàm này là một mảng phức tạp có độ chính xác đơn hoặc kép.
FFT hiển thị gì?FFT hiển thị hai tần số riêng biệt của các đường ống riêng lẻ . Những minh họa này cho thấy bản chất thiết yếu của FFT. Đối với sóng hình sin có một tần số, FFT bao gồm một đỉnh duy nhất.
FFT trả về đơn vị nào?Nếu bạn thực hiện biến đổi Fourier của x(t) để có X(jw) , thì đơn vị của X(jw) là C*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/HzC*sec hoặc C/Hz (according to the Fourier transform integral). If you use (abs(X(jw)))^2 , then the units are C^2*sec^2=C^2*sec/Hz . |