Là lấy mẫu trước khi tương quan chéo là vô dụng?


12

Hãy xem xét một trường hợp đơn giản trong đó hai tín hiệu từ hai cảm biến khác nhau có mối tương quan chéo và thời gian trễ khi đến được tính từ absissa của đỉnh của hàm tương quan chéo của chúng.

Bây giờ chúng ta hãy giả sử thêm rằng do các ràng buộc về chiều của cả anten và các ràng buộc về tốc độ lấy mẫu tối đa có thể, độ trễ tối đa có thể đạt được là , tương ứng với 10 mẫu.D

Vấn đề:

Do những hạn chế đó, độ trễ tính toán của bạn có thể thay đổi từ bất kỳ giá trị số nguyên nào trong khoảng từ 0 đến 10 mẫu, đó là: . Đây là vấn đề bởi vì điều tôi thực sự muốn là phân biệt độ trễ phân đoạn về độ trễ giữa hai tín hiệu đặt trên ăng ten của tôi và thay đổi kích thước hoặc tốc độ lấy mẫu không phải là một lựa chọn.0D10

Một vài suy nghĩ:

  • Đương nhiên, điều đầu tiên tôi nghĩ đến trong trường hợp này là đảo lộn các tín hiệu trước khi thực hiện mối tương quan chéo. Tuy nhiên tôi nghĩ rằng đây là 'gian lận' bằng cách nào đó, bởi vì tôi không thực sự thêm bất kỳ thông tin mới nào vào hệ thống.

  • Tôi không hiểu làm thế nào upampling không phải là 'gian lận' theo một nghĩa nào đó. Vâng, chúng tôi đang xây dựng lại tín hiệu của mình dựa trên thông tin tần số hiện tại được quan sát, nhưng làm thế nào để cung cấp cho một kiến ​​thức về nơi tín hiệu thực sự bắt đầu giữa, giả sử, và ? Trường hợp thông tin này chứa trong tín hiệu gốc xác định rằng bắt đầu trễ phân đoạn thực sự của tín hiệu thực sự ở ?D= =7D= =số 8D= =7.751

Câu hỏi:

  • Đây thực sự là 'gian lận'?

    • Nếu không, thì 'thông tin' mới này đến từ đâu?
    • Nếu có, thì những lựa chọn nào khác có sẵn để ước tính thời gian trễ phân đoạn?
  • Tôi nhận thức được việc lấy mẫu kết quả của mối tương quan chéo, trong nỗ lực thu thập các câu trả lời mẫu phụ cho sự chậm trễ, nhưng đây có phải cũng không phải là một hình thức 'gian lận'? Tại sao nó khác với upampling trước mối tương quan chéo?

Nếu thực sự đó là trường hợp mà việc lấy mẫu không phải là 'gian lận', thì tại sao chúng ta lại cần phải tăng tỷ lệ lấy mẫu? (Không có tốc độ lấy mẫu cao hơn luôn theo nghĩa tốt hơn là nội suy tín hiệu được lấy mẫu thấp?)

Dường như sau đó chúng ta có thể lấy mẫu với tốc độ rất thấp và nội suy nhiều như chúng ta muốn. Điều này sau đó sẽ không làm tăng tỷ lệ mẫu 'vô dụng' trong khi chỉ đơn giản là nội suy một tín hiệu cho mong muốn của trái tim chúng ta? Tôi nhận ra rằng phép nội suy cần thời gian tính toán và chỉ đơn giản là bắt đầu với tỷ lệ mẫu cao hơn sẽ không, nhưng đó có phải là lý do duy nhất không?

Cảm ơn.


3
Tôi nghi ngờ có sự khác biệt về độ chính xác, vì lượng thông tin là như nhau, nhưng chắc chắn sẽ rẻ hơn khi nội suy sau mối tương quan chéo chỉ trong khu vực quan tâm so với việc lấy mẫu mọi thứ trước và sau đó thực hiện tất cả các phép nhân bổ sung đó.
endolith

@endolith Điểm tốt (s). Bây giờ tôi đã rõ hơn về lý do tại sao / làm thế nào điều này hoạt động, và vâng, lấy mẫu kết quả sẽ là cách để đi trong trường hợp này.
Spacey

Câu trả lời:


12

Đó không phải là gian lận, và nó cũng không thêm bất kỳ thông tin mới nào. Những gì bạn đang làm là điều tương tự mà bất kỳ LPF lấy mẫu nào đang thực hiện - thêm các số 0 và sau đó xây dựng lại dạng sóng với thông tin tần số đã biết. Do đó, không có thông tin mới, nhưng vẫn có độ phân giải thời gian tốt hơn.

Upsampling kết quả là tương tự - không có thông tin mới nhưng độ phân giải thời gian tốt hơn. Bạn có thể làm một cái gì đó rất giống nhau thông qua phép nội suy bậc hai .

Tất cả các phương pháp này - lấy mẫu và nội suy đa thức - có được thông tin của chúng về vị trí của đỉnh phân đoạn từ cả đỉnh và các lân cận của nó. Một ví dụ hình ảnh nhanh chóng. Đỉnh cân bằng

Đường màu xanh trong hình trên là dữ liệu tương quan chéo mô phỏng của tôi (mặc dù nó có thể là bất kỳ kết quả nào, không chỉ là tương quan chéo). Đó là những gì tôi gọi là một đỉnh "cân bằng" bởi vì các hàng xóm là đối xứng. Như bạn có thể mong đợi, phép nội suy bậc hai kết quả (đường màu đỏ) chỉ ra rằng đỉnh thực sự bằng 0.

Hình ảnh bên dưới, mặt khác, cho thấy một đỉnh không cân bằng. Xin lưu ý rằng không có gì thay đổi trong kết quả ngoại trừ các giá trị của hai hàng xóm gần nhất. Điều này làm cho bộ nội suy, tuy nhiên, thay đổi ước tính của nó về đỉnh phân đoạn. nhập mô tả hình ảnh ở đây

Một lợi ích phụ của các phương pháp này (nội suy đa thức và lấy mẫu) là nó cũng cho bạn ước tính giá trị đỉnh thực sự, mặc dù chúng ta thường quan tâm đến vị trí hơn.

Nếu thực sự đó là trường hợp mà việc lấy mẫu không phải là 'gian lận', thì tại sao chúng ta lại cần phải tăng tỷ lệ lấy mẫu?

Để thỏa mãn tiêu chí Nyquist.

Không có tỷ lệ lấy mẫu cao hơn luôn có ý nghĩa tốt hơn là nội suy tín hiệu được lấy mẫu thấp?

Không. Từ quan điểm lý thuyết, miễn là tiêu chí Nyquist được thỏa mãn, không quan trọng tỷ lệ mẫu là bao nhiêu. Từ quan điểm thực tế, bạn thường đi với tốc độ mẫu thấp nhất có thể để giảm yêu cầu lưu trữ và tải tính toán, từ đó giảm tài nguyên cần thiết và tiêu thụ điện năng.


1
FS

1
@Mohammad Có và không. Tiếng ồn - từ chính kết quả hoặc tiếng ồn lượng tử hóa - cuối cùng sẽ làm tăng độ phân giải thời gian trở nên vô nghĩa. Tuy nhiên, cho đến thời điểm đó, vâng, việc lấy mẫu nhiều hơn sẽ cải thiện tính chính xác của ước tính.
Jim Clay

1
ghi chú và mã ví dụ cho phép nội suy bậc hai / parabol: gist.github.com/255291#file_parabolic.md và một số phương pháp nội suy thay thế: dspguru.com/dsp/howtos/how-to-interpolate-fft-peak
endolith

2
@JimClay Có cơ hội ngủ trên đó. Bây giờ thì rõ ràng - thông tin luôn ở đó - nó chỉ được mã hóa trong mối quan hệ giữa các mẫu để nói. Và đây là những gì đa khớp trong thực tế sử dụng trong phép nội suy của nó. Và vì tín hiệu bị giới hạn băng tần, (nghĩa là chỉ có thể thay đổi quá nhanh trong một khoảng thời gian), nên chỉ có rất nhiều cách để nó tồn tại giữa các mẫu.
Spacey

8

Bất kỳ tín hiệu giới hạn có thể được nội suy. Thông tin bổ sung "giữa các mẫu" được chứa trong các mẫu liền kề cộng với thực tế là tín hiệu đã được giới hạn trước khi lấy mẫu (có xu hướng lan truyền thông tin giữa các mẫu liền kề). Nếu hai tín hiệu được phân tách thành dải, thì như vậy sẽ là tương quan chéo, do đó, mối tương quan chéo cũng có thể được nội suy. Upsampling chỉ là một hình thức nội suy khác, một hình thức nội suy rất chính xác cho các tín hiệu giới hạn dải; nhưng bạn cũng có thể sử dụng phép nội suy Sinc (cả hai đều có thể chính xác hơn phép nội suy bậc hai hoặc phép parabol).

Nội suy có thể hiển thị một đỉnh giữa các mẫu. Như vậy có lẽ không vô dụng.

Nếu bạn có tín hiệu chứa phổ rộng hơn, thì nó có thể chứa nhiều thông tin hơn. Do đó, việc lấy mẫu ở tốc độ cao hơn sẽ cung cấp nhiều thông tin hơn, nhưng chỉ tối đa dưới một nửa tần số giới hạn băng tần mới và chỉ khi tín hiệu có chứa nội dung tần số phổ hữu ích thực tế trên giới hạn băng tần cũ và bây giờ bạn có thể có được bổ sung này phổ bằng cách sử dụng một quy trình hoặc bộ lọc giới hạn băng rộng mới hơn, thay vì quy trình cũ bị mất nhiều hơn. Lấy mẫu dữ liệu ở tần số cao hơn nhiều của tín hiệu đã được giới hạn ở tần số thấp hơn nhiều dưới Fs / 2 sẽ chỉ mua cho bạn nội suy, không có thêm bất kỳ nội dung thông tin nào.

Nếu việc lấy mẫu được lượng tử hóa, thì việc lấy mẫu ở tốc độ cao hơn có thể mua cho bạn một phần thông tin LSB, do độ hoà sắc hoặc hình dạng nhiễu của lỗi lượng tử hóa. Nhưng điều này phụ thuộc vào tỷ lệ S / N và độ chính xác của bộ lấy mẫu và quá trình lượng tử hóa chính xác được sử dụng trong lấy mẫu.

Nếu hai tín hiệu không được phân chia chính xác trước khi lấy mẫu và tương quan chéo, thì không chỉ cả hai việc lấy mẫu hoặc nội suy sẽ mua cho bạn một kết quả rác, nhưng đó có thể là mối tương quan chéo không được nội suy ban đầu.


1
Cảm ơn hotpaw2. Vì vậy, chính xác khi nói rằng nó không thực sự quan trọng nếu bạn lấy mẫu cả hai tín hiệu và sau đó tương quan, hoặc tương quan và sau đó lật lại kết quả? Do giới hạn băng tần, hai phương pháp sẽ cho bạn kết quả giống nhau?
Spacey

@Mohammad: Tôi sẽ nghĩ rằng nó chứa cùng một thông tin, nhưng vì phép nội suy không hoàn hảo, kết quả sẽ hơi khác nhau tùy theo việc thực hiện.
endolith

3

Tôi nghĩ rằng câu trả lời tốt nhất tôi có thể cung cấp cho bạn là: bạn có tất cả các phương tiện để tự mình tìm hiểu. Xây dựng một ví dụ "ngược". Sử dụng Matlab, bắt đầu với hai tín hiệu được lấy mẫu với các khoảng thời gian lấy mẫu rất nhỏ (sao cho chúng là tín hiệu thời gian gần như liên tục). Tính toán mối tương quan chéo và tìm đỉnh (nếu đó là điều bạn muốn), điều mà bạn sẽ có thể làm với độ chính xác cao. Sau đó, lấy mẫu cả hai tín hiệu và lặp lại quá trình. So sánh vị trí và chiều cao của đỉnh thứ hai với vị trí thứ nhất. Tôi chắc chắn thứ hai sẽ tồi tệ hơn. Sự cải thiện từ thứ hai đến thứ nhất là những gì bạn đạt được, nếu bạn lấy mẫu trước khi tương quan chéo.

Để lấy mẫu đúng cách, cả hai tín hiệu cần được giới hạn băng tần và bạn cần biết các băng thông đó. Thông tin "mới" mà bạn đề cập trong câu hỏi của bạn đến từ các mẫu liền kề và thực tế là các tín hiệu bị giới hạn băng tần.


Cảm ơn Telaclavo. Một điều thực sự không rõ ràng đối với tôi là, thuật ngữ của việc "giới hạn băng tần". Tôi biết những gì có nghĩa là, nhưng tôi không hiểu tại sao nó được đề cập ở đây. BẤT K system hệ thống nào, ngoại trừ tiếng ồn có thể là 'giới hạn băng tần', vậy tại sao nó lại được nhắc đến nhiều lần theo nghĩa này?
Spacey

3

Để thêm một chút vào các câu trả lời trước đó, bạn có thể nhận được tương đương với một mối tương quan chéo giới hạn băng tần được ghép lại bằng cách biến biến tương quan của bạn thành một số nguyên.

τ

τ= =tranh luậntối đaτΣn= =0N-1f(n)g(n+τ)

Đó là, nó tìm thấy tối đa của mối tương quan chéo.

abf(n)g(n)n= ={0,1,...,N-1}Nτ[-N+1,N-1]

τcorrelate_pointomegaτ= =1τ-1

N2 mẫu (tần số nyquist), vì điều này được chia sẻ giữa các dải dương và âm. Giải pháp được sử dụng ở đây là nội suy giữa phasor xoay dương và phasor xoay âm (là các phản xạ trên trục thực), đó là chiếu một phasor xoay đơn vị lên trục thực, đó là một hàm cos ( pibởi vì đó là là giá trị omegatương ứng với tần số nyquist). Rõ ràng giá trị này cần phải thực để duy trì tín hiệu miền thời gian thực.

ττ bạn ưa thích.

import numpy
from numpy import fft
from scipy import optimize

def arg_max_corr(a, b):

    if len(a.shape) > 1:
        raise ValueError('Needs a 1-dimensional array.')

    length = len(a)
    if not length % 2 == 0:
        raise ValueError('Needs an even length array.')

    if not a.shape == b.shape:
        raise ValueError('The 2 arrays need to be the same shape')

    # Start by finding the coarse discretised arg_max
    coarse_max = numpy.argmax(numpy.correlate(a, b, mode='full')) - length+1

    omega = numpy.zeros(length)
    omega[0:length/2] = (2*numpy.pi*numpy.arange(length/2))/length
    omega[length/2+1:] = (2*numpy.pi*
            (numpy.arange(length/2+1, length)-length))/length

    fft_a = fft.fft(a)

    def correlate_point(tau):
        rotate_vec = numpy.exp(1j*tau*omega)
        rotate_vec[length/2] = numpy.cos(numpy.pi*tau)

        return numpy.sum((fft.ifft(fft_a*rotate_vec)).real*b)

    start_arg, end_arg = (float(coarse_max)-1, float(coarse_max)+1)

    max_arg = optimize.fminbound(lambda tau: -correlate_point(tau), 
            start_arg, end_arg)

    return max_arg

1
τττ1

Ồ, câu hỏi của bạn biến mất! Tuy nhiên, tôi sẽ để lại câu trả lời ở đó.
Henry Gomersall

tmộtbạn

N2N(đăng nhậpN+1)

Ngoài ra, tôi thấy suy nghĩ trong miền Fourier thực sự đơn giản hơn nhiều. Nhưng có lẽ điều đó không bình thường!
Henry Gomersall

2

Có một bằng chứng trực quan cho thấy việc lấy mẫu trước khi tương quan chéo là tương đương với việc thực hiện sau đó:

Tương quan chéo là tích chập với tín hiệu ngược thời gian khác. Thời gian đảo ngược không ảnh hưởng đến băng thông. Convolution là phép nhân trong miền tần số, cũng không làm tăng băng thông. Nếu các tín hiệu ban đầu được giới hạn băng tần chính xác, bằng một nửa tần số lấy mẫu, thì kết quả tương quan chéo cũng sẽ như vậy. Không có răng cưa được giới thiệu để làm hỏng kết quả. Nội suy sau đó tiết kiệm công việc.

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.