Làm thế nào để phản hồi phức tạp trung bình (và biện minh)?


11

Tôi đang phát triển phần mềm tính toán đáp ứng của hệ thống bằng cách so sánh FFT của tín hiệu đầu vào và đầu ra. Các tín hiệu đầu vào và đầu ra được chia thành các cửa sổ và, đối với mỗi cửa sổ, các tín hiệu được trừ trung bình và nhân với một hàm Hann. Đáp ứng công cụ cho cửa sổ đó là tỷ lệ FFT của dữ liệu được xử lý.

Tôi tin rằng ở trên là thủ tục tiêu chuẩn, mặc dù tôi có thể mô tả nó kém. Vấn đề của tôi là làm thế nào để kết hợp các phản hồi từ nhiều cửa sổ.

Theo như tôi có thể thấy, cách tiếp cận chính xác là lấy trung bình các giá trị phức tạp, trên tất cả các cửa sổ. Biên độ và đáp ứng pha sau đó là biên độ và pha của giá trị trung bình, phức ở mỗi tần số:

av_response = sum_windows(response) / n
av_amplitude = sqrt(real(av_response)**2 + imag(av_response)**2)
av_phase = atan2(imag(av_response), real(av_response))

với các vòng lặp ngầm trên các thùng tần số.

Nhưng tôi đã được yêu cầu thay đổi điều này để tính biên độ và pha trong mỗi cửa sổ trước , và sau đó tính trung bình biên độ và pha trên tất cả các cửa sổ:

amplitude = sqrt(real(response)**2 + imag(response)**2)
av_amplitude = sum_windows(amplitude) / n
phase = atan2(imag(response), real(response))
av_phase = sum_windows(phase) / n

Tôi đã lập luận rằng điều này là không chính xác vì các góc trung bình là "chỉ sai" - ví dụ trung bình là 0 và 360 độ là 180, nhưng những người tôi đang làm việc đã trả lời bằng cách nói "OK, chúng tôi sẽ chỉ hiển thị biên độ".

Vì vậy, câu hỏi của tôi là:

  • Tôi có đúng không khi nghĩ rằng cách tiếp cận thứ hai nói chung là không chính xác cho biên độ quá?
  • Nếu vậy, có bất kỳ trường hợp ngoại lệ nào có thể có liên quan, và điều này có thể giải thích tại sao những người tôi đang làm việc thích phương pháp thứ hai? Ví dụ, có vẻ như hai cách tiếp cận sẽ đồng ý khi nhiễu trở nên nhỏ, vì vậy có lẽ đây là một xấp xỉ được chấp nhận cho nhiễu thấp?
  • Nếu cách tiếp cận thứ hai là không chính xác, có bất kỳ tài liệu tham khảo thuyết phục, có thẩm quyền nào mà tôi có thể sử dụng để hiển thị điều này?
  • Nếu cách tiếp cận thứ hai không chính xác, có ví dụ nào hay, dễ hiểu cho thấy điều này đối với biên độ (như trung bình là 0 và 360 độ đối với pha) không?
  • Ngoài ra, nếu tôi không chính xác, điều gì sẽ là một cuốn sách tốt để tôi giáo dục bản thân tốt hơn?

Tôi đã cố gắng tranh luận rằng trung bình -1 1 1 -1 1 -1 -1 nên bằng 0 chứ không phải 1, nhưng điều đó không thuyết phục. Và trong khi tôi nghĩ rằng theo thời gian, tôi có thể xây dựng một đối số dựa trên ước tính khả năng tối đa được đưa ra cho một mô hình nhiễu cụ thể, thì đó không phải là lý do mà những người tôi đang làm việc sẽ lắng nghe. Vì vậy, nếu tôi không sai, tôi cần một lập luận mạnh mẽ từ chính quyền hoặc một cuộc biểu tình "hiển nhiên".

[Tôi đã cố gắng thêm nhiều thẻ, nhưng không thể tìm thấy các thẻ có liên quan và không thể xác định thẻ mới là người dùng mới - xin lỗi]


Lý do nào khiến họ không hài lòng với phương pháp của bạn?
nibot

phản hồi trông mượt mà hơn khi được vẽ bằng phương pháp thứ hai. Tôi nghĩ điều này là bởi vì, đối với các trường hợp được xem xét, không có tín hiệu đáng kể (ở mức cao hơn f), trong khi cách tiếp cận thứ hai buộc một tín hiệu "xuất hiện" từ nhiễu. Ngoài ra, các vấn đề chính trị / truyền thông khác nhau như bạn có thể đoán.
andrew cooke

1
Bạn đã thử cung cấp một số trường hợp thử nghiệm? Lấy dữ liệu ngẫu nhiên và lọc qua một số bộ lọc có đáp ứng tần số đã biết. Xác minh rằng ước tính hàm truyền hội tụ đến hàm truyền đã biết.
nibot

Không. tôi chưa đó là một gợi ý tốt cảm ơn. nếu trình bày tốt, tôi có thể thấy rằng nó có sức thuyết phục.
andrew cooke

Câu trả lời:


13

Ước tính hàm truyền thường được thực hiện hơi khác so với phương pháp bạn mô tả.

Phương pháp của bạn tính toán

F[y]F[x]

F

Việc thực hiện điển hình hơn sẽ tính mật độ phổ chéo của x và y chia cho mật độ phổ công suất của x:

F[y]F[x]|F[x]|2=F[y]F[x]F[x]F[x]

F[x]

Dự toán không thường xuyên

Chủ lao động của bạn đã đề nghị bạn ước tính chức năng chuyển bằng cách sử dụng

|F[y]||F[x]|

Điều này sẽ làm việc , nhưng có hai nhược điểm lớn:

  1. Bạn không nhận được bất kỳ thông tin giai đoạn.
  2. xy

Phương pháp của bạn và phương pháp tôi đã mô tả tránh các vấn đề này bằng cách sử dụng tính trung bình kết hợp .

Người giới thiệu

Ý tưởng chung về việc sử dụng các phân đoạn trung bình chồng chéo để tính mật độ phổ công suất được gọi là phương pháp của Welch . Tôi tin rằng phần mở rộng để sử dụng điều này để ước tính các hàm truyền cũng thường được gọi là phương thức của Welch, mặc dù tôi không chắc liệu nó có được đề cập trong bài báo của Welch không. Tra cứu giấy của Welch có thể là một tài nguyên quý giá. Một chuyên khảo hữu ích về chủ đề này là cuốn sách của Bendat và Piersol, Dữ liệu ngẫu nhiên: Quy trình phân tích và đo lường .

Thẩm định

Để xác thực phần mềm của bạn, tôi khuyên bạn nên áp dụng một số trường hợp thử nghiệm, trong đó bạn tạo ra nhiễu trắng Gaussian và cung cấp phần mềm qua bộ lọc kỹ thuật số có chức năng truyền đã biết. Đưa các đầu vào và đầu ra vào thói quen ước tính hàm truyền của bạn và xác minh rằng ước tính đó hội tụ đến giá trị đã biết của hàm truyền.


Ah! cảm ơn bạn. tôi sẽ điều tra / thử cái này
andrew cooke

@nibot Cái gì, chính xác, độ dài FFT được sử dụng ở đây?
Spacey

Bạn có thể sử dụng bất kỳ chiều dài. Độ dài xác định độ phân giải và, ngầm định (được cung cấp một lượng dữ liệu cố định để làm việc), số lượng trung bình. Fft dài hơn = độ phân giải tốt hơn nhưng cũng có lỗi lớn hơn do có trung bình ít hơn.
nibot

ok, một sự khác biệt nữa là bạn có <F (y) F * (x)> / <F (x) F * (x)> trong khi Phonon có <F (y)> <F * (x)> / (< F (x)> <F * (x)>) afaict: o (
andrew cooke

Không có điểm nào để tính toán <F (y)> <F * (x)> / (<F (x)> <F * (x)>), vì <F * (x)> sẽ hủy ngay lập tức. Tôi nghĩ nó đúng như tôi đã viết.
nibot

12

Chào mừng bạn đến với Xử lý tín hiệu!

Bạn hoàn toàn đúng. Bạn không thể chỉ đơn giản là trung bình cường độ DFT và các pha, đặc biệt là các pha. Đây là một minh chứng đơn giản:

z=a+bi|z|zz

|z|=a2+b2
z=tan1(ba)

zz1z2

z=z1+z22=a1+b1i+a2+b2i2=(a1+a2)+(b1+b2)i2

Trong trường hợp này,

|z|=(a1+a2)24+(b1+b2)24=12(a1+a2)2+(b1+b2)2a12+b12+a22+b222

Cũng thế,

z=tan1(b1a1)+tan1(b2a2)2tan1(2(b1+b2)2(a1+a2))

|z|z

Bây giờ, để làm những gì bạn đang cố gắng làm, tôi đề nghị như sau. Về mặt lý thuyết, bạn có thể tìm thấy đáp ứng xung của hệ thống bằng cách chia DFT của đầu ra cho DFT của đầu vào. Tuy nhiên, khi có tiếng ồn, bạn sẽ nhận được kết quả rất lạ. Một cách tốt hơn để làm điều đó là sử dụng ước tính đáp ứng xung FFT kênh đôi, diễn ra như sau (đạo hàm không được cung cấp ở đây, nhưng bạn có thể tìm thấy nó trực tuyến).

Gi(f)=Fi1(f)+Fi2(f)++FiN(f)NFik(f)kkiGo(f)=Fo1(f)+Fo2(f)++FoN(f)NGH^(f)H(f)

H^(f)=Go(f)Gi(f)|Gi(f)|2

()


2
cảm ơn; tôi đã không chắc chắn cho dù bầu cử này hoặc nibot là là câu trả lời tốt nhất - tôi nghĩ rằng họ đang ủng hộ quá trình tương tự, vì vậy đi với sự giới thiệu cuốn sách, nhưng nếu tôi đã có hai phiếu sẽ bao gồm này quá ...
andrew Cooke

1
@andrewcooke Vâng, cả hai đều ủng hộ chính xác cùng một điều. Tôi hy vọng điều này sẽ làm sáng tỏ mọi thứ cho bạn và các đồng nghiệp của bạn.
Phonon

nó đã giúp tôi rất nhiều (cảm ơn lần nữa). vào thứ hai, tôi sẽ đề nghị tôi (1) thực hiện phương pháp được đề xuất và (2) so sánh với dữ liệu đã biết (tổng hợp) cho cả ba. sau đó hy vọng cách tiếp cận tốt nhất sẽ giành chiến thắng: o)
andrew cooke

@Phonon Chúng ta đang sử dụng độ dài FFT nào để tính toán các FFT ở đây? length_of_signal + max_length_of_channel + 1?
Spacey

@Mohammad Phải có ít nhất hai lần độ dài của sự chậm trễ mà bạn mong muốn tìm thấy. Điều này là do tính đối xứng tròn của DFT, do đó bạn sẽ nhận được cả các giá trị độ trễ nguyên nhân và không nguyên nhân trong kết quả của mình.
Phonon

3

Đây là một sự khác biệt giữa trung bình kết hợp và không liên tục của phổ FFT. Tính trung bình kết hợp có nhiều khả năng loại bỏ nhiễu ngẫu nhiên trong phân tích. Incoherent có nhiều khả năng làm nổi bật cường độ nhiễu ngẫu nhiên. Cái nào trong số này là quan trọng hơn cho báo cáo kết quả của bạn?


nếu họ cho kết quả khác nhau, tôi đoán tôi muốn một ước tính không thiên vị. là không thiên vị?
andrew cooke
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.