Đầ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,

from scipy import fftpack
N = 10

fftpack.fft[np.ones[N]]  # The first component is np.mean[x] * N
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

z = np.ones[10]
z[::2] = -1

print[f'Applying FFT to {z}']
fftpack.fft[z]
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]

x = np.array[[1, 5, 12, 7, 3, 0, 4, 3, 2, 8]]
X = fftpack.fft[x]

np.set_printoptions[precision=2]

print["Real part:     ", X.real]
print["Imaginary part:", X.imag]

np.set_printoptions[]
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ể

fftpack.fftfreq[10]
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

from skimage import io
image = io.imread['images/moonlanding.png']
M, N = image.shape

f, ax = plt.subplots[figsize=[4.8, 4.8]]
ax.imshow[image]

print[[M, N], image.dtype]
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

Hình 4-7. Một hình ảnh ồn ào của cuộc đổ bộ mặt trăng

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 .

Chủ Đề