ข้อมูลต่อไปนี้ระบุถึงการชดเชย CIC และไม่ใช่เทคนิค "การบิดเบือน" ทั่วไป แต่มันเป็นวิธีที่ตรงไปตรงมาเพื่อ "ชดเชย" การบิดเบือน "ไม่แปร" หากทราบการตอบสนองความถี่สามารถใช้อินเวอร์สของความถี่เพื่อชดเชย ตัวอย่างเช่นตัวกรอง CIC ซึ่งอาจใช้ตัวกรองที่ไม่ดีเนื่องจากความซับซ้อนที่ลดลงจะได้รับการชดเชยในภายหลังห่วงโซ่สัญญาณ ในตัวอย่างนี้การตอบสนองความถี่รู้และสามารถใช้อินเวอร์สได้ หมายเหตุด้วยตัวกรองหลายอัตราคุณต้องการใช้คลื่นความถี่ "ใช้งานได้" หลังจากการทำลายล้าง
โดยทั่วไปในการชดเชยตัวกรอง CIC การผกผันของการตอบสนองตัวกรอง CIC สามารถใช้ในการสร้างตัวกรองการชดเชย CIC มีการตอบสนองของ (ดูการอ้างอิง [r2] หรือ [r3])
H(ω)=∣∣∣sin(ωD/2)sin(ωM/2)∣∣∣N
โดยที่ D คือความแตกต่างที่ล่าช้า M คืออัตราการทำลายล้างและ N คือลำดับตัวกรอง (จำนวนตัวกรองแบบเรียงซ้อน) สามารถระบุผกผันเป็น
H(ω)=∣∣∣sin(ωM/2)sin(ωD/2)∣∣∣N
เมื่อเรามีการตอบสนองความถี่ของตัวกรองค่าตอบแทนเราสามารถเลือกความยาวของตัวกรอง FIR ที่เราต้องการ ความยาวของ FIR นั้นเฉพาะแอปพลิเคชัน เห็นได้ชัดว่ายิ่ง FIR กรองนานขึ้นค่าตอบแทนก็จะดีขึ้น
ต่อไปนี้เป็นแผนของการชดเชยล่วงหน้า
ต่อไปนี้เป็นรหัส Python เพื่อสร้างการตอบสนองความถี่และแปลง
import numpy as np
from numpy import sin, abs, pi
import pylab
D = 1; M = 7; N = 3
Hfunc = lambda w : abs( (sin((w*M)/2)) / (sin((w*D)/2.)) )**N
HfuncC = lambda w : abs( (sin((w*D)/2.)) / (sin((w*M)/2.)) )**N
w = np.arange(1024) * pi/1024
G = (M*D)**N
H = np.array(map(Hfunc, w))
Hc = np.array(map(HfuncC, w))
# only use the inverse (compensation) roughly to the first null.
Hc[int(1024*pi/M/2):] = 1e-8
plot(w, 20*log10(H/G))
plot(w, 20*log10(Hc*G))
grid('on')
sinc−1
[r1] Altera "ทำความเข้าใจกับตัวกรองค่าตอบแทน CIC"
[r2] R. Lyons, "การทำความเข้าใจการประมวลผลสัญญาณดิจิตอล", 2 ed., Prentice Hall, Upper Saddle River, นิวเจอร์ซีย์, 2004
[r3] R. Lyons "ทำความเข้าใจกับตัวกรอง Comb Integrator ของ Cascaded"