Các giá trị tương đối của các chương trình nâng cấp khác nhau là gì?


12

Gần đây tôi đã gặp một hệ thống DSP đã thực hiện một số thay đổi nội bộ thông qua phần đệm bằng không. Mong đợi không có thứ tự giữ, tôi ngạc nhiên khi thấy rằng tín hiệu DC không tạo ra đầu ra DC; nhiều sóng hài của tần số lấy mẫu bên trong (thấp hơn) cũng có mặt trong đầu ra.

Điều này dẫn đến câu hỏi của tôi: Những kỹ thuật upampling nào thường được sử dụng, và giá trị tương đối của chúng là gì? Tại sao tôi chọn đệm không, giữ lệnh 0 hoặc giữ lệnh đầu tiên và những kỹ thuật khác có sẵn?

Một số làm rõ:

  • Hệ thống này là thời gian thực, vì vậy sơ đồ upampling phải là nhân quả.
  • Bộ tăng tốc được theo sau bởi bộ lọc khử răng cưa cũng có thể được chỉ định.

Câu trả lời:


11

Theo mục đích của câu trả lời này, tôi sẽ sử dụng thuật ngữ Matlab và định nghĩa "upsampling" là quá trình chèn số không ở giữa các mẫu đầu vào, và "suy" là quá trình kết hợp của upsampling và lọc để loại bỏ các m - 1 bí danh ( m là yếu tố nội suy) mà upampling giới thiệu. Để được giải thích về cách thức / lý do tại sao upampling giới thiệu bí danh, vui lòng xem chủ đề nàym1m1m .

Điều quan trọng là phải hiểu rằng bất kỳ bộ lọc thông thấp nào cũng có thể được sử dụng để loại bỏ các bí danh và do đó hoàn thành phép nội suy. Một số bộ lọc có lợi thế khi được sử dụng trong nội suy, mặc dù. Tôi sẽ thảo luận về các hương vị khác nhau của lọc nội suy bên dưới.

Bộ lọc FIR

Nội suy các bộ lọc FIR là hiệu quả vì chúng kết hợp việc lấy mẫu và lọc bí danh thành một bước. Điều này dễ thấy nhất trong một ví dụ. Giả sử chúng ta có một chuỗi dữ liệu và chúng ta muốn nội suy nó theo hệ số hai. Bước đầu tiên là upample theo hệ số hai. Điều này thay đổi chuỗi dữ liệu gốc từ x 0 , x 1 , . . . x N đến x 0 , 0 , x 1 , 0 , . . . x N .x[n]x0,x1,...xNx0,0,x1,0,...xN

Bây giờ, giả sử chúng ta có bộ lọc FIR thông thấp, h[n] , mà chúng ta sẽ sử dụng để xóa bí danh. Khi chúng tôi kết hợp chuỗi dữ liệu được ghép lại với bộ lọc, một nửa số vòi của bộ lọc được kích thích bởi các mẫu khác không và một nửa số vòi không hoạt động vì chúng tương ứng với các mẫu bằng không. Một nửa được kích thích và một nửa không hoạt động lật qua lại khi bộ lọc đi qua dữ liệu. Hai bộ vòi này đôi khi được gọi là các pha lọc.

Hiệu ứng tương tự này có thể đạt được hoàn toàn bằng cách loại bỏ việc lấy mẫu và lọc chuỗi dữ liệu gốc bằng bộ lọc FIR nội suy. Bộ lọc FIR nội suy tạo ra đầu ra cho mỗi mẫu đầu vào. Đối với tất cả các đầu ra m , bộ lọc sẽ hoạt động trên cùng một mẫu đầu vào c e i l ( K / m ) (trong đó K là số lượng vòi lọc và "trần" là chức năng trần).mmceil(K/m)

Một ví dụ hy vọng sẽ minh họa cách thức này hoạt động. Giả sử rằng chúng ta có một bộ lọc sáu vòi và chúng ta đang nội suy theo hệ số hai. Các vòi lọc là [1 -2 4 4 -2 1]. Nếu chúng ta nội suy theo nghĩa đen và sau đó lọc các mẫu và vòi lọc sẽ xếp hàng (một khi có sự chồng chéo hoàn toàn) như sau:

0:1x2:20:4x1:40:2x0:1
Mẫu tiếp theo ...

x3:10:2x2:40:4x1:20:1
Mẫu tiếp theo ...

0:1x3:20:4x2:40:2x1:1
Và như thế. Điểm của bộ lọc nội suy là nó bỏ qua thực sự chèn các số không và chỉ thay thế bộ vòi mà nó sử dụng tại thời điểm này. Do đó, trình tự trước sẽ trông giống như sau:

x2:2x1:4x0:1

x3:1x2:4x1:2

x3:2x2:4x1:1

Không giữ lệnh

m1x0,x1,...xNx0,x0,x1,x1,...xN,xN

m

Giữ lệnh đầu tiên

x0,x1,...xNx0,x0+x12,x1,x1+x22,...xN

[12112][132312312]

Bộ lọc tam giác là hai bộ lọc hình chữ nhật được kết hợp với nhau, tương ứng với bình phương chân trong miền tần số. Đây là một bước tiến nhất định từ việc giữ không thứ tự, nhưng vẫn không tuyệt vời.

Bộ lọc IIR

Tôi chưa bao giờ sử dụng bộ lọc IIR nội suy vì vậy tôi sẽ không nói nhiều về chúng. Tôi giả sử rằng các đối số tương tự được áp dụng như trong bộ lọc thông thường - Bộ lọc IIR hiệu quả hơn, có thể không ổn định, không có pha tuyến tính, v.v. Tôi không tin rằng chúng có thể kết hợp các bước tăng tốc và lọc như bộ lọc FIR có thể, nhưng tôi có thể sai về điều đó

Nội suy FFT

Tôi sẽ ném cái này vào mặc dù nó không phổ biến lắm (tất nhiên, tôi không nghĩ việc giữ không là phổ biến). Chủ đề này thảo luận về việc lấy mẫu lại FFT, trong đó việc lấy mẫu lại là cả nội suy và số thập phân.

Nắm giữ đơn hàng cao hơn

Bộ nội suy giữ bậc hai thường được gọi là "bộ nội suy bậc hai". Chúng không tuyến tính và do đó không thể được thực hiện dưới dạng bộ lọc FIR, là tuyến tính. Tôi không hiểu rõ về toán học đằng sau chúng, vì vậy tôi sẽ không thảo luận về hiệu suất của chúng. Tuy nhiên, tôi sẽ nói rằng tôi tin rằng chúng có phần phổ biến bên ngoài xử lý tín hiệu.

Phương pháp bậc cao hơn (ba hoặc nhiều hơn) cũng tồn tại. Chúng được gọi là "hồi quy đa thức".

BIÊN TẬP:

Bộ lọc tích hợp Cascade (CIC)

Tôi quên đề cập đến Bộ lọc CIC . Các bộ lọc CIC được sử dụng vì hai lý do: chúng chỉ sử dụng các bộ cộng / trừ (không phải là vấn đề lớn bây giờ vì bội số nhanh và rẻ) và chúng có thể thực hiện thay đổi tốc độ mẫu rất lớn khá hiệu quả. Mặt trái của chúng là về cơ bản chúng là một triển khai hiệu quả của bộ lọc hình chữ nhật xếp tầng, vì vậy chúng có tất cả các nhược điểm của bộ lọc hình chữ nhật như đã thảo luận ở trên. Các bộ nội suy CIC có khá nhiều luôn được đặt trước bởi bộ lọc FIR bù, làm sai lệch tín hiệu để loại bỏ sự biến dạng được giới thiệu bởi CIC. Nếu thay đổi tốc độ mẫu đủ lớn, chi phí của bộ lọc tiền méo là xứng đáng.


Khảo sát tuyệt vời Mr Jim. Để thêm vào danh mục giữ bậc cao hơn của bạn, tôi tin rằng điều này cũng được gọi là "hồi quy đa thức". Trong đó, với một tập hợp các điểm cụ thể, chúng tôi tính toán một dòng, parabola, khối, đa thức bậc cao phù hợp nhất. Khi chúng ta có phương trình, chúng ta có thể dễ dàng tìm ra điểm trung gian là gì.
Spacey

Câu hỏi: 1) Tôi không hoàn toàn rõ ràng về đoạn cuối của phần FIR Filter. Bạn đã đề cập rằng đầu ra thứ 2 và thứ 3 tương ứng với mẫu đầu vào thứ 1 sử dụng băng lọc 1, 4, 7 và sau đó là 2, 5, 8. Tuy nhiên, bạn cũng đề cập rằng tất cả chúng đều là số không ... vì vậy không có đầu ra thứ 2 và thứ 3 mẫu chỉ số không trong trường hợp này? 2) Đây là 'Bộ lọc nội suy FIR', nó trông giống như, [1 0 0 3.2 0 0 -2.1 0 0 1.1 0 0] cho m = 3? (Số được tạo thành).
Spacey

@Mohammad Mình đã chỉnh sửa câu trả lời. Tôi hi vọng cái này giúp được. Và cảm ơn các thông tin về hồi quy đa thức.
Jim Clay

1
@endolith Hai lý do, tôi nghĩ: sự phức tạp và nó chỉ có ý nghĩa tính toán khi độ dài bộ lọc vượt quá một số nhất định (và tôi không chắc con số đó là gì). Cách tiếp cận FFT thực hiện rất tốt khi xử lý các khối mẫu, nhưng nếu bạn đang xử lý một luồng mẫu thì bạn cũng phải thực hiện thêm chồng chéo hoặc lưu chồng lấp để duy trì tính liên tục.
Jim Clay

1
@endolith Một điều thực sự hay về phương pháp FFT là hầu như không mất chi phí khi sử dụng bộ lọc lớn.
Jim Clay

3

Câu trả lời của Jim bao gồm nó khá tốt. Tất cả các phương pháp upampling theo cùng một sơ đồ cơ bản:

  1. Chèn các số 0 giữa các mẫu: Những kết quả này trong sự lặp lại định kỳ của phổ gốc nhưng để lại phổ trong dải ban đầu hoàn toàn nguyên vẹn
  2. Bộ lọc thông thấp để loại bỏ tất cả các phổ gương

Sự khác biệt chính giữa các phương thức là cách thực hiện lọc thông thấp. Upampler lý tưởng sẽ bao gồm một bộ lọc thông thấp lý tưởng nhưng điều đó không thực tế. Xem xét vấn đề trong miền tần số cho phép tìm thuật toán lấy mẫu đúng cho các yêu cầu cụ thể của bạn:

  1. Làm thế nào nhiều biến dạng biên độ tôi có thể chịu đựng trong ban nhạc ban đầu? Là tần số phụ thuộc?
  2. Tôi có quan tâm đến giai đoạn trong ban nhạc gốc không? Nếu bạn cần duy trì pha bạn cần một pha tuyến tính FIR. Nếu không phải là một giai đoạn tối thiểu thì công việc tốt hơn trong việc duy trì "quan hệ nhân quả" và các bộ dữ liệu sắc nét.
  3. Tôi cần bao nhiêu để triệt tiêu hình ảnh phản chiếu? Về cơ bản, hình ảnh phản chiếu sẽ hiển thị dưới dạng nhiễu thêm trong dải cơ sở.

Các bộ nội suy phi tuyến tính bậc cao (spline, hermiti, Lagrange) thường không hoạt động tốt do lỗi nội suy phụ thuộc nhiều vào tín hiệu và hầu như không thể ánh xạ tới yêu cầu cụ thể.


Ý bạn là gì khi "làm một công việc tốt hơn trong việc duy trì" quan hệ nhân quả ""?
nibot

0

Khi xem xét sự khác biệt giữa giữ mẫu và giữ (tức là lặp lại các giá trị mẫu) và đệm bằng 0, sẽ rất hữu ích khi nhận ra (như Jim và Hilmar chỉ ra) rằng giữ và giữ mẫu có thể được hiểu là tăng mẫu bằng cách đệm bằng 0 Bộ lọc FIR có đáp ứng xung bao gồm một xung hình chữ nhật.

Ví dụ: khi lấy mẫu từ 2 kHz đến 64 kHz (hệ số 32), chúng ta có thể thực hiện điều này bằng cách chèn 31 số không giữa mỗi cặp lấy mẫu 2 kHz, sau đó lọc bằng bộ lọc FIR gồm 32 bộ lọc, với tất cả các bộ lọc khác hệ số bằng không.

sincτ= =0

Nó chỉ ra rằng sincchức năng này có null ở chính xác các sóng hài của tần số lấy mẫu thấp hơn. Trong ứng dụng ví dụ của chúng tôi về việc lấy mẫu từ 2048 Hz đến 65536 Hz, đáp ứng tần số của hoạt động giữ mẫu có giá trị null ở 2048 Hz, 4096 Hz, v.v.

nhập mô tả hình ảnh ở đây

Từ điều này, tôi kết luận rằng bất kỳ bộ lọc nội suy nào triệt tiêu hoàn toàn sóng hài của tần số lấy mẫu ban đầu sẽ trông giống như "mẫu và giữ". Thê nay đung không?

1/f


Vấn đề là các null rất hẹp, vì vậy hầu hết các tín hiệu sẽ có năng lượng bên ngoài các null.
Jim Clay

@JimClay, Không phải các null hẹp hoàn hảo để giết các sóng hài của tỷ lệ lấy mẫu thấp hơn? Tôi đồng ý, bạn cũng muốn có thêm một vài cực xung quanh 1 kHz để loại bỏ tần số hình ảnh. Tôi đoán tôi sẽ mở rộng câu hỏi của mình: làm thế nào để thiết kế một bộ lọc nội suy tốt?
nibot

Bạn thiết kế bộ lọc thông thấp có dải thông bao gồm băng thông tín hiệu của bạn và dải dừng bao gồm các bí danh được giới thiệu khi bạn lấy mẫu. Tần số ở giữa điểm 3dB của tín hiệu và bí danh 'là dải chuyển tiếp của bạn. Nếu câu hỏi của bạn là "làm cách nào để tôi thiết kế bộ lọc thông thấp?", Thì hãy hỏi nó trong một câu hỏi khác và chúng ta có thể thảo luận về nó.
Jim Clay

Tôi thường hiểu cách thiết kế các bộ lọc, thường bằng cách đặt các cực và các số 0 trong miền s một cách rõ ràng và sau đó chuyển đổi chúng thành các bộ lọc miền z. Tôi đã tự hỏi liệu có bất kỳ thủ thuật đặc biệt cho các bộ lọc nội suy. Thông điệp tôi đang thực hiện là thực sự không có bất kỳ thủ thuật nào - các bộ lọc nội suy cũng giống như bất kỳ loại bộ lọc nào khác và thiết kế của chúng là sự lựa chọn thỏa hiệp giữa các cân nhắc khác nhau (gợn sóng, pha, trễ nhóm, suy giảm băng tần tối thiểu, độ phức tạp tính toán, v.v.).
nibot

Mặt khác, tôi không biết gì về thiết kế bộ lọc FIR.
nibot
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.