เหตุใดการเปลี่ยนแปลงแบบสองทางในคู่มือนี้จึงให้ผลลัพธ์ที่แตกต่างจาก Matlab


10

ฉันมีตัวกรองบัตเตอร์เวิลำดับแรกที่มีความถี่ในการตัด\ฟังก์ชั่นการถ่ายโอนของมันคือตอนนั้นωc

H(s)=ωcs+ωc

การใช้การแปลงบิลิแนร์เพื่อหา (ฟังก์ชั่นนั้นเรียกว่าอะไร?) ฉันได้รับH(z)

H(z)=ωc2Tz1z+1+ωc=ωcz+ωc(2T+ωc)z+ωc2T

อย่างไรก็ตามฉันไม่สามารถตกลงผลลัพธ์นี้กับสิ่งที่ Matlab กำลังทำอยู่ ดูเหมือนว่าผิดไม่ว่ามูลค่าของเท่าฉันคิดว่าและด้านล่างนี้มีค่าสัมประสิทธิ์ของ(z)H ( z )TBAH(z)

>> [B,A] = butter(1,0.5)
B = 0.5000    0.5000
A = 1.0000   -0.0000
>> [B,A] = butter(1,0.6)
B = 0.5792    0.5792
A = 1.0000    0.1584
>> [B,A] = butter(1,0.7)
B = 0.6625    0.6625
A = 1.0000    0.3249
>> [B,A] = butter(1,0.8)
B = 0.7548    0.7548
A = 1.0000    0.5095

ฉันเข้าใจผิดอะไร


MATLAB ไม่ได้ใช้การแปลงแอนะล็อกเป็นดิจิทัล มันออกแบบตัวกรองแบบดิจิทัลดังนั้นแนวคิดการแปลงไบนิอาร์อาจไม่สามารถใช้ได้
Phonon

1
@Phonon: คำตอบนี้ดูเหมือนจะบ่งบอกว่า Matlab ใช้การแปลงไบลิเนียร์ในทางใดทางหนึ่ง
Andreas

มาช้าไปที่เกมตรงนี้ แต่ฟังก์ชั่นตัวพิมพ์ใหญ่ทั้งหมด H ของ z / s / \ omega มักจะเรียกว่าฟังก์ชันถ่ายโอน เมื่อการโต้แย้งเป็นเวลาหรือตัวอย่างมันเรียกว่าการตอบสนองต่อแรงกระตุ้นและมักจะลดระดับลง h ดังนั้นฟังก์ชั่นการถ่ายโอนคือการแปลง (Z, ฟูริเยร์, Laplace ขึ้นอยู่กับการใช้งาน) ของการตอบสนองแบบอิมพัลส์
Emanuel Landeholm

คำตอบ:


10

สิ่งที่สอง:

ก่อนที่จะทำการแทนที่คุณต้องprewarpความถี่ cutoff โดยทำการแทนที่:s=2Tz1z+1

ωc,w=2Ttan(ωcT2)

โดยที่คือความถี่ตัดยอดที่แปรปรวน สิ่งนี้เป็นสิ่งจำเป็นเนื่องจากการแปลงรูปแบบไบลิเนียร์จะทำแผนที่ระนาบครึ่งซ้ายในโดเมน Laplace (ใช้ในการออกแบบตัวกรองแบบอะนาล็อก) ไปยังหน่วยวงกลมในโดเมนในโดเมนแบบไม่เชิงเส้น ดังนั้นเมื่อคุณเข้าใกล้อัตรา Nyquist (ความถี่ดิจิตอลของ ) การประมาณต้นแบบตัวกรองแบบอะนาล็อกจะไม่ถูกต้อง z ± πωc,wz±π

นอกจากนี้พารามิเตอร์ที่สองที่คุณจะผ่านไปยังbutterฟังก์ชั่นเป็นตัดความถี่ปกติไม่ได้สุ่มตัวอย่างช่วงTความถี่ปกติที่ใช้โดยฟังก์ชันนั้นอยู่ในช่วงและเท่ากับอัตราส่วนของความถี่คัตออฟที่ต้องการต่ออัตรา Nyquist:( 0 , 1 )T(0,1)

ωn=ωc2πfs2

ωn=ωcπfs

ωn=ωcTπ

ขอบคุณ! ตอนนี้ฉันได้ค่าสัมประสิทธิ์ที่ถูกต้องแล้ว นี่ฉันแทนที่สำหรับในการแสดงออกสำหรับ(z) สิ่งนี้ทำงานได้เพราะฉันรู้ว่าความถี่คัตออฟมีผลต่อตัวกรอง Butterworth หรือไม่ เกิดอะไรขึ้นถ้าฉันมีตัวกรองทั่วไปและเพิ่งรู้ว่าเสา (และเลขศูนย์) ของ ? ฉันจะรู้ได้อย่างไรว่าค่าใดที่จะทดแทน o m e g a c , w H ( z ) H ( s )ωcomegac,wH(z)H(s)
Andreas

เพราะฉันคิดว่าการแปลง bilinear ของเหตุผลสามารถทำได้โดยรู้เพียงแค่ความถี่ตัวอย่างไม่ใช่ความถี่ cutoff (ปกติ)? H(s)
Andreas

คุณสามารถใช้การแปลง bilinear เพื่อแมประบบ -domain ใด ๆเป็นการประมาณในโดเมนไม่จำเป็นต้อง prewarping แต่ข้อแม้ที่ทำให้ระบบไม่ต่อเนื่อง - เวลาเป็นเพียงการประมาณกับระบบแอนะล็อกใช้ Prewarping ความถี่ใด ๆ ที่น่าสนใจช่วยให้คุณ "ยืด" การทำแผนที่เพื่อให้ภูมิภาคของแถบความถี่ที่คุณสนใจมากที่สุดนั้นมีความเพี้ยนเล็กน้อยจากตัวกรองต้นแบบที่สุดเท่าที่จะทำได้ zsz
Jason R

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.