Nội suy độ lớn của biến đổi Fourier rời rạc (DFT)


7

Ví dụ, để tìm tần số cực đại, có vẻ hợp lệ khi sử dụng các phương pháp nội suy giới hạn băng tần trên các thùng DFT phức tạp, hoặc riêng biệt trên các phần thực và ảo của chúng và để tính độ lớn hoặc bình phương của kết quả. Nhưng làm thế nào về nội suy giới hạn băng tần về độ lớn của các thùng (tôi không nghĩ đó là hợp lệ), hoặc độ lớn bình phương của chúng (có thể hợp lệ)? Theo giá trị, tôi có nghĩa là các giá trị được nội suy hoàn hảo phải bằng với các giá trị được tìm thấy bằng cách tính toán chúng từ một DFT lớn hơn của phiên bản không đệm của tín hiệu miền thời gian.

Cách tiếp cận đầu tiên đảm bảo kết quả không âm, không giống như các cách khác nếu phép nội suy không hoàn hảo, hãy xem câu hỏi này về phép nội suy giới hạn băng tần không âm hoặc dương .


Này, đây có phải là một câu hỏi không?
robert bristow-johnson

@ robertbristow-johnson Vâng, đó là ... phần "thế nào". Tôi có dự đoán của tôi ở đó mặc dù.
Olli Niemitalo

1
BTW, gaussian là AN -hàm riêng của Fourier Transform. thực sự có một số lượng vô hạn các hàm riêng và việc xây dựng một hàm riêng là khá dễ dàng.
robert bristow-johnson

1
@ robertbristow-johnson Bắt đầu hơi tiếp tuyến, nhưng còn gì nữa không?
Olli Niemitalo

1
bất kỳ hàm đối xứng chẵn nào cộng với biến đổi Fourier của chính nó (với thay thế bằng ) là một hàm riêng của Biến đổi Fourier. ft
robert bristow-johnson

Câu trả lời:


4

Các điểm được nội suy của DFT có thể được tính bằng cách sử dụng một sản phẩm chấm của một vài mẫu xung quanh vùng cực đại với một vectơ nội suy được tính toán trước. Vectơ nội suy được xác định bởi vị trí của mẫu nội suy mong muốn, có tính đến lượng đệm không cần thiết, v.v., v.v.

Kỹ thuật này và phương pháp tính toán các vectơ nội suy được trình bày trong Phụ lục B của tài liệu này:

http://ericjacobsen.org/FTinterp.pdf

Tôi hy vọng việc đó sẽ có ích một chút.


Cảm ơn Eric, thật vui khi thấy bạn cũng đã lưu ý về phép nội suy cường độ rằng "Sự không tuyến tính trong phát hiện cường độ dẫn đến một tín hiệu mà về cơ bản là không được lấy mẫu". Tôi cho thấy trong câu trả lời của mình rằng cường độ bình phương không bị suy giảm khi tín hiệu miền thời gian được đệm bằng 0 đến 2 lần chiều dài. Thật không may, không phải tất cả các phương trình trong pdf đều hiển thị chính xác trong Chrome, ví dụ Eq. 3.5.
Olli Niemitalo

1
Nó không được đánh dấu cho đến khi độ lớn được phát hiện, do đó, nội suy các hệ số phức tạp để có được hệ số nội suy phức tạp và sau đó tính toán cường độ (hoặc độ lớn bình phương) để tránh vấn đề đó.
Eric Jacobsen

Đã đồng ý! Pdf hoạt động tốt trong Edge.
Olli Niemitalo

5

Trước tiên, một minh chứng rằng các hình vuông của cả

[,0,0,1,1,0,0,] and[,0,0,1,1,0,0,]

công bằng

[,0,0,1,1,0,0,] and

nhưng bình phương của các phép nội suy chân thành của chúng khác nhau (Hình 1):

Hình vuông của nội suy chân thành
Hình 1. Hình vuông của các phép nội suy chân thành của (màu xanh) và (màu đỏ).[1,1][1,1]

Điều này chứng tỏ rằng nói chung không thể phục hồi bình phương của tín hiệu giới hạn băng tần từ các mẫu thống nhất của nó được lấy ở tần số lấy mẫu quan trọng của tín hiệu giới hạn băng tần.


Hãy thử nghiệm các phương pháp nội suy khác nhau trong Octave. Tiêu chuẩn vàng của phép nội suy giới hạn băng tần là DFT không zero pad pad DFT:

>> format free
>> x = [1 2 3];
>> y = [1 2 3  0 0 0];
>> abs(fft(x))
ans =

 6 1.73205 1.73205

>> abs(fft(y))
ans =

 6 4.3589 1.73205 2 1.73205 4.3589

Tập hợp số cuối cùng là các giá trị cường độ được tính toán từ các thùng miền tần số được nội suy hoàn hảo. Thay vào đó, hãy thử nội suy độ lớn :

>> fft(fftshift(horzcat([0 0], fftshift(ifft(abs(fft(x)))), [0])))
ans =

 6 4.57735 1.73205 0.309401 1.73205 4.57735

Có vẻ khá một chút. Bây giờ chúng ta hãy thử nội suy độ lớn bình phương :

>> fft(fftshift(horzcat([0 0], fftshift(ifft(abs(fft(x)).^2)), [0])))
ans =

 36 25 3 -8 3 25

>> sqrt(ans)
ans =

 (6,0) (5,0) (1.73205,0) (0,2.82843) (1.73205,0) (5,0)

Nó không chỉ tắt mà còn sqrt()trả về một số phức cho giá trị nội suy âm. Vì vậy, cách duy nhất hợp lệ để nội suy các giá trị bin?

Chúng ta hãy cho cơ hội này thêm một lần nữa, bằng cách cố gắng nội suy dữ liệu miền tần số được nhân đôi theo hệ số 2. Do biến đổi độ dài chẵn, điều này đòi hỏi phải sao chép "mẫu Nyquist", vì vậy xin lỗi nếu mã khó đọc.

>> z = [1 2 3  0 0 0  0 0 0  0 0 0];
>> abs(fft(z))
ans =

 6 5.55485 4.3589 2.82843 1.73205 1.77302 2 1.77302 1.73205 2.82843 4.3589 5.55485

Trên đây là những gì chúng ta muốn. Chúng ta hãy thử nội suy cường độ tăng gấp đôi :

>> fftshift(horzcat([0 0 0], fftshift(ifft(abs(fft(y)))), [0 0 0]))
ans =

 3.36365 1.10447 0.318175 0 0 0 0 0 0 -0.208949 0.318175 1.10447

>> ans(4) = ans(length(ans)-2)
ans =

 3.36365 1.10447 0.318175 -0.208949 0 0 0 0 0 -0.208949 0.318175 1.10447

>> fft(ans)
ans =

 5.79105 5.59483 4.56785 2.7273 1.5231 1.76882
 2.20895 1.76882 1.5231 2.7273 4.56785 5.59483

Điều đó vẫn còn. Chúng ta hãy thử nội suy độ lớn gấp đôi bình phương :

>> fftshift(horzcat([0 0 0], fftshift(ifft(abs(fft(y)).^2)), [0 0 0]))
ans =

 14 8 3 0 0 0 0 0 0 1.18424e-15 3 8

>> ans(4) = ans(length(ans)-2)
ans =

 14 8 3 1.18424e-15 0 0 0 0 0 1.18424e-15 3 8

>> sqrt(fft(ans))
ans =

 6 5.55485 4.3589 2.82843 1.73205 1.77302 2 1.77302 1.73205 2.82843 4.3589 5.55485

Bây giờ nó hoạt động hoàn hảo! Thông điệp mang về nhà là lấy mẫu (pad thời gian bằng 0) ít nhất là theo hệ số hai trước khi cố gắng nội suy trong miền tần số và nội suy cường độ bình phương thay vì cường độ. Nó hoạt động vì lấy độ lớn bình phương giống như nhân mỗi giá trị bin với liên hợp phức tạp của nó. Phép chia phức bảo tồn băng thông của hàm được giới hạn bởi dữ liệu, do đó phép nhân tăng gấp đôi "băng thông miền thời gian" vì nó tương đương với tích chập miền thời gian. Lưu ý rằng khi chọn phương pháp nội suy, cường độ bình phương tăng gấp đôi vẫn được lấy mẫu nghiêm trọng, do đó, quá mức quá mức sẽ làm cho phép nội suy chính xác dễ dàng hơn nhiều.

Tôi đã trả lời câu hỏi của riêng tôi, nhưng sẽ chấp nhận cái nhìn sâu sắc hơn như một câu trả lời!

PS Chỉ cần tìm ra cũng có interpft, nội suy với cú pháp ít hơn.

Sử dụng thông tin bổ sung

Nội suy trở nên dễ dàng hơn hoặc thậm chí chính xác với thông tin bổ sung về dữ liệu, ví dụ: đó là một hình vuông được thay đổi theo bình phương được lấy mẫu theo thời gian. Trong trường hợp đó, với hai mẫu ngay trước và ngay sau mẫu lớn nhất, thời gian của đỉnh có thể được tính bằng:αγ1<d<1

d={0if α=γ,11p2p,p=γαα+γotherwise,

với có nghĩa là độ chân được chuyển sang chính xác thời gian của mẫu lớn nhất. Phép nội suy tương tự có thể được thực hiện ở một nửa tốc độ mẫu, đó là tần số lấy mẫu quan trọng của hàm cơ bản, độ lớn bằng với độ lệch dịch chuyển thời gian, với hai mẫu có giá trị lớn nhất kế tiếp và của hình vuông của giá trị tuyệt đối của hàm bên dưới:d=0αβ

0d1d={0if β=0,1if α=0,1+p1p22p,p=βαα+βotherwise,

Các công thức không bị ảnh hưởng bởi tỷ lệ biên độ của dữ liệu. Để ước tính tần suất, bạn hiếm khi có một sự thay đổi hoàn toàn theo thời gian thực, nhưng nếu bạn thực hiện, có các công thức nội suy chính xác cho 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.