หลังจากที่เราได้พิจารณาเรื่องคอมพิวเตอร์และวิธีที่มันแทนข้อมูลแล้ว ตอนนี้ขอหันมาดูวิธีที่คอมพิวเตอร์ประมวลผลข้อมูลบ้าง แน่นอนว่าเราจะสามารถตรวจสอบได้เพียงบางสิ่งเท่านั้น ดังนั้นตามที่เคยทำ เราจะมุ่งเน้นที่พื้นฐาน

ส่วนใหญ่สิ่งที่คอมพิวเตอร์ประมวลผลคือสัญญาณจากแหล่งต่างๆ และเราได้พูดถึงแล้วว่าทำไมสัญญาณเหล่านี้มักมาในรูปของลำดับตัวเลขที่ได้จากระบบการสุ่มตัวอย่างที่มีช่องว่างเท่าๆ กัน การประมวลผลเชิงเส้น ซึ่งเป็นเรื่องเดียวที่ผมมีเวลาจะกล่าวถึงในหนังสือเล่มนี้ เกี่ยวข้องกับ digital filters (ตัวกรองดิจิทัล) เพื่อแสดง “สไตล์” และวิธีที่สิ่งต่างๆ เกิดขึ้นจริง ผมขอเล่าให้ฟังก่อนว่าผมเข้ามาเกี่ยวข้องกับเรื่องนี้อย่างไร แล้วจึงเล่าเรื่องที่ผมดำเนินการต่อไป

ตอนแรกผมไม่เคยไปที่สำนักงานของรองประธานของผม W.O. Baker เลย; เราเจอกันเพียงผ่านทางในโถงและมักจะหยุดคุยกันเพียงไม่กี่นาที ครั้งหนึ่ง ประมาณปี 1973–1974 เมื่อผมเจอเขาในโถง ผมเล่าให้เขาฟังว่าเมื่อผมมาที่ Bell Telephone Laboratories ในปี 1946 ผมสังเกตว่าแล็บค่อยๆ เปลี่ยนจากศูนย์กลางการสื่อสารแบบรีเลย์ไปเป็นอิเล็กทรอนิกส์ แต่มีคนจำนวนมากไม่ยอมเปลี่ยนมาใช้ oscilloscopes และเทคโนโลยีอิเล็กทรอนิกส์รุ่นใหม่ จนถูกย้ายไปอยู่ที่อื่นเพื่อให้พวกเขาออกจากเส้นทาง สำหรับเขานั่นเป็นความสูญเสียทางเศรษฐกิจ แต่สำหรับผมเป็นความสูญเสียทางสังคม เพราะพวกเขาไม่พอใจอย่างมาก ถูกทอดทิ้ง (แม้ว่าจะเป็นความผิดของพวกเขาเองก็ตาม) ผมบอกว่าเคยเห็นสิ่งเดียวกันเกิดขึ้นเมื่อเราย้ายจากคอมพิวเตอร์อะนาล็อกรุ่นก่อน (ซึ่ง Bell Telephone Laboratories มีผู้เชี่ยวชาญมากเพราะพัฒนาส่วนหนึ่งของเทคโนโลยีในช่วง wwii) ไปสู่คอมพิวเตอร์ดิจิทัลสมัยใหม่—เราได้ทิ้งวิศวกรจำนวนมากไว้ข้างหลัง และนั่นเป็นทั้งความสูญเสียทางเศรษฐกิจและสังคม ผมสังเกตว่าทั้งเราทราบว่าบริษัทโทรศัพท์กำลังจะเปลี่ยนไปสู่การส่งสัญญาณแบบดิจิทัลให้เร็วที่สุดเท่าที่จะทำได้ และครั้งนี้เราจะทิ้งวิศวกรไม่พอใจเป็นจำนวนมากขึ้น ดังนั้นผมจึงสรุปว่าเราควรทำอะไรสักอย่าง now เช่นจัดหาหนังสือพื้นฐานและอุปกรณ์ฝึกอบรมที่เหมาะสมเพื่อช่วยให้พวกเขาปรับตัวเข้ากับอนาคตและทิ้งไว้น้อยลง เขาจ้องตาผมตรงๆ แล้วพูดว่า “Yes, Hamming, you should,” แล้วเดินจากไป! นอกจากนี้เขายังสนับสนุนผมผ่าน John Tukey ซึ่งเขาพูดคุยบ่อยๆ ดังนั้นผมจึงรู้ว่าเขากำลังติดตามความพยายามของผม

จะทำอย่างไร? ในตอนแรกผมคิดว่าตัวเองรู้น้อยมากเกี่ยวกับ digital filters และจริงๆ ผมก็ไม่ได้สนใจพวกมันนัก แต่จะมองข้ามรองประธานของตัวเองอย่างชาญฉลาดดีหรือ — และการสรุปของการสังเกตของตัวเอง? ไม่ได้แน่! ขยะทางสังคมที่ซ่อนอยู่มีค่ามากเกินกว่าที่ผมจะนิ่งดูได้

ดังนั้นผมจึงหันไปหาเพื่อนคือ Jim Kaiser (J.F. Kaiser) ซึ่งเป็นหนึ่งในผู้เชี่ยวชาญระดับโลกด้าน digital filters ในเวลานั้น และแนะนำให้เขาหยุดงานวิจัยปัจจุบันแล้วเขียนหนังสือเกี่ยวกับ digital filters—การเขียนหนังสือเพื่อสรุปงานเป็นขั้นตอนธรรมชาติของการพัฒนานักวิทยาศาสตร์ หลังจากกดดันบ้างเขาตกลงจะเขียนหนังสือ ผมคิดว่าตัวเองรอดแล้ว แต่เมื่อติดตามผลงานของเขาก็พบว่าเขาไม่ได้เขียนอะไรเลย เพื่อช่วยแผนของผม ผมเสนอว่า ถ้าเขาสอนผมตอนทานข้าวกลางวันที่ร้าน (ที่นั่นมีเวลาให้คิดมากกว่าที่โรงอาหาร) ผมจะช่วยเขียนหนังสือร่วมกัน (ส่วนใหญ่เป็นส่วนแรก) และเราจะตั้งชื่อว่า Kaiser and Hamming — เขาตกลง!

ตลอดเวลาที่ผ่านมาผมได้รับการศึกษาที่ดีจากเขา และผมก็เริ่มเขียนส่วนแรกของหนังสือ แต่เขาก็ยังไม่ได้เขียนอะไร ดังนั้นวันหนึ่งผมจึงพูดว่า “If you don’t write more we will end up calling it Hamming and Kaiser” — เขาก็ตกลง ต่อมาเมื่อผมเขียนเกือบเสร็จและเขายังคงไม่ได้เขียนอะไร ผมบอกว่าผมคงขอบคุณเขาในคำนำ แต่ควรตั้งชื่อหนังสือว่า Hamming — เขาก็เห็นด้วย — และเรายังคงเป็นเพื่อนที่ดีกันเสมอ! นั่นคือที่มาที่ผมเขียนหนังสือเกี่ยวกับ digital filters และผมได้เห็นมันผ่านมาจนถึงสามฉบับ โดยได้รับคำแนะนำที่ดีจาก Kaiser เสมอ

หนังสือเล่มนี้ยังพาผมไปยังที่ต่างๆ ที่น่าสนใจ เพราะผมสอนคอร์สสั้นหนึ่งสัปดาห์เกี่ยวกับมันหลายปี คอร์สสั้นเริ่มขึ้นขณะที่ผมยังเขียนหนังสือเพราะผมต้องการฟีดแบ็กและได้เสนอให้ UCLA Extension Division ว่าจะสอนเป็นคอร์สสั้น ซึ่งพวกเขาตกลง สิ่งนี้นำไปสู่การสอนที่ UCLA, ที่ปารีส ลอนดอน และเคมบริดจ์ ประเทศอังกฤษ รวมทั้งที่อื่นๆ ในสหรัฐฯ และอย่างน้อยสองครั้งในแคนาดา การทำสิ่งที่ต้องทำแม้จะไม่อยากทำก็ให้ผลตอบแทนอย่างงดงามในระยะยาว

ตอนนี้เรามาถึงส่วนที่สำคัญกว่า นั่นคือวิธีที่ผมเริ่มเรียนรู้หัวข้อใหม่อย่าง digital filters การเรียนรู้เรื่องใหม่เป็นสิ่งที่คุณจะต้องทำหลายครั้งในอาชีพหากอยากเป็นผู้นำและไม่ถูกทิ้งไว้ข้างหลัง ในไม่ช้าผมก็เห็นว่าทฤษฎี digital filter ถูกครอบงำโดย Fourier series ซึ่งผมได้เรียนพื้นฐานในวิทยาลัย และจริงๆ ผมได้เรียนรู้เพิ่มจากงานประมวลสัญญาณที่ทำให้ John Tukey ซึ่งเป็นศาสตราจารย์จาก Princeton และเป็นอัจฉริยะ และเป็นพนักงานของ Bell Telephone Laboratories หนึ่งหรือสองวันต่อสัปดาห์ ประมาณสิบปีผมทำหน้าที่เป็นแขนในการคำนวณให้เขาบ่อยครั้ง

ในฐานะนักคณิตศาสตร์ผมทราบ เช่นเดียวกับทุกคนว่า any complete set of functions จะใช้แทนฟังก์ชันโดยทั่วไปได้พอๆ กัน แล้วทำไมจึงใช้ Fourier series เท่านั้น? ผมถามวิศวกรไฟฟ้าหลายคนแต่ไม่ได้คำตอบที่น่าพอใจ หนึ่งในนั้นตอบว่าสัญญาณกระแสสลับเป็น sinusoidal จึงใช้ sinusoids ซึ่งผมก็ตอบว่าไม่น่าจะสมเหตุสมผล สำหรับผม นี่คือผลพวงของการศึกษาหลังจากที่วิศวกรไฟฟ้าออกจากสถาบันแล้ว

ดังนั้นผมต้องคิดถึงพื้นฐาน เหมือนที่ผมเล่าไว้ตอนใช้คอมพิวเตอร์ตรวจจับข้อผิดพลาด อะไรคือสิ่งที่เกิดขึ้นจริงๆ ผมคิดว่าหลายคนคงรู้ว่าเราต้องการการแทนสัญญาณที่ time-invariant เพราะมักไม่มีจุดเริ่มต้นของเวลา ดังนั้นเราถึงถูกนำไปสู่ฟังก์ชันตรีโกณมิติ (เป็น eigenfunctions ของการเลื่อน) ในรูปของ Fourier series และ Fourier integrals เป็นเครื่องมือสำหรับการแทนค่าสิ่งต่างๆ

ที่สอง linear systems ซึ่งเป็นสิ่งที่เราต้องการในตอนนี้ ก็มี eigenfunctions เดียวกัน — complex exponentials ซึ่งเทียบเท่ากับฟังก์ชันตรีโกณมิติจริง ดังนั้นกฎง่ายๆ คือ: ถ้าคุณมีระบบ time-invariant หรือระบบเชิงเส้น คุณควรใช้ complex exponentials

เมื่อผมค้นลึกลงไปอีก ผมพบเหตุผลที่สามในการใช้พวกมันในสาขา digital filters มีทฤษฎีหนึ่งซึ่งมักเรียกว่า Nyquist’s sampling theorem (แม้มันจะรู้จักมานานก่อนและ Whittaker เคยตีพิมพ์ในรูปแบบที่ยากจะเข้าใจ) ซึ่งกล่าวว่าถ้าคุณมีสัญญาณจำกัดแบนด์และสุ่มตัวอย่างที่ช่องว่างเท่าๆ กันด้วยอัตราอย่างน้อยสองเท่าของความถี่สูงสุด สัญญาณดั้งเดิมสามารถถูกกู้คืนจากตัวอย่างได้ ดังนั้นกระบวนการสุ่มตัวอย่างจึงไม่สูญเสียข้อมูลเมื่อเราทดแทนสัญญาณต่อเนื่องด้วยตัวอย่างที่มีช่องว่างเท่าๆ กัน ตราบเท่าที่ตัวอย่างครอบคลุมทั้งแนวจำนวนจริง อัตราการสุ่มตัวอย่างมักเรียกว่า Nyquist rate ตามชื่อ Harry Nyquist ซึ่งมีชื่อเสียงในงานอื่นๆ เช่นความคงตัวของเซอร์โว หากคุณสุ่มตัวอย่างฟังก์ชันที่ไม่จำกัดแบนด์ ความถี่สูงจะถูก "aliased" ลงสู่ความถี่ต่ำกว่า คำนี้ Tukey ตั้งขึ้นเพื่ออธิบายว่าความถี่ เดี่ยว สูงหนึ่งจะปรากฏเป็นความถี่ เดี่ยว ต่ำในแบนด์ของ Nyquist สิ่งนี้ไม่เป็นจริงสำหรับชุดฟังก์ชันอื่น เช่น กำลังของ t ภายใต้การสุ่มตัวอย่างและการสร้างใหม่อย่างเท่าๆ กัน กำลังสูงของ t จะกลายเป็นพหุนาม (หลายเทอม) ของกำลังต่ำกว่า t.

ดังนั้นมีเหตุผลที่ดีสามประการในการใช้ฟังก์ชัน Fourier: (1) time invariance, (2) linearity, และ (3) การกู้คืนฟังก์ชันดั้งเดิมจากตัวอย่างที่มีช่องว่างเท่าๆ กันเป็นเรื่องง่ายและเข้าใจได้

ดังนั้นเราจะวิเคราะห์สัญญาณในเชิงฟังก์ชัน Fourier และผมไม่จำเป็นต้องอธิบายกับวิศวกรไฟฟ้าว่าทำไมเรามักใช้ complex exponents เป็นตัวแทนความถี่แทนฟังก์ชันตรีโกณมิติจริง เรามีการปฏิบัติการเชิงเส้น และเมื่อใส่สัญญาณ (สตรีมของตัวเลข) เข้าไปในฟิลเตอร์ ก็จะได้สตรีมตัวเลขอื่นออกมา เป็นเรื่องธรรมชาติ—ไม่ว่าจะมาจากคอร์ส linear algebra หรือจากวิชา differential equations—ที่จะถามว่าฟังก์ชันใดเข้าและออกมาเหมือนเดิมเพียงต่างกันที่สเกล ตามที่กล่าวข้างต้น พวกมันคือ complex exponentials; พวกมันคือ eigenfunctions ของระบบเชิงเส้น, time-invariant ที่ถูกสุ่มตัวอย่างเป็นช่องว่างเท่าๆ กัน

ปรากฏว่า transfer function ก็คือ eigenvalues ของ eigenfunctions ที่สอดคล้องกัน! เมื่อผมถามวิศวกรไฟฟ้าหลายคนว่าฟังก์ชันถ่ายโอนคืออะไร ไม่มีใครเคยบอกผมเช่นนั้น! ใช่เมื่อชี้ให้พวกเขาเห็นว่ามันเป็นแนวคิดเดียวกัน พวกเขาก็ต้องเห็นด้วย แต่ความจริงที่ว่าแนวคิดเดียวกันนี้ไม่เคยข้ามเข้ามาในความคิดของพวกเขาเลยนั้นน่าแปลกมาก แนวคิดง่ายๆ เดียวกัน ที่อยู่ในสองหรือมากกว่าหน้ากากสำหรับพวกเขา และพวกเขาไม่รู้ว่ามีความเชื่อมโยงกัน! จงกลับสู่พื้นฐานเสมอ!

เราเริ่มการอภิปรายด้วยคำถามว่า “สัญญาณคืออะไร?” ธรรมชาติให้สัญญาณหลายชนิดที่เป็นแบบต่อเนื่อง ซึ่งเราจึงสุ่มตัวอย่างเป็นช่องว่างเท่าๆ กันและจากนั้นแปลงเป็นดิจิทัล (quantize) โดยปกติสัญญาณจะเป็นฟังก์ชันของเวลา แต่การทดลองในห้องแล็บที่ใช้แรงดันที่มีช่องว่างเท่ากันและบันทึกการตอบสนองก็ถือเป็นสัญญาณดิจิทัลเช่นกัน ดังนั้นสัญญาณดิจิทัลคือ ลำดับการวัดที่มีช่องว่างเท่าๆ กันในรูปของตัวเลข และจาก digital filter เราจะได้ชุดตัวเลขที่มีช่องว่างเท่าๆ กันอีกชุดหนึ่ง บางครั้งต้องประมวลผลข้อมูลที่มีช่องว่างไม่เท่ากัน แต่ผมจะละเว้นเรื่องนั้นไว้ที่นี่

การควอนไทซ์สัญญาณลงสู่หนึ่งในหลายระดับมักมีผลกระทบน้อยกว่าที่คาด คุณคงเคยเห็นภาพที่ถูกควอนไทซ์เป็นสอง สี่ แปด ระดับ และแม้ภาพสองระดับก็ยังมักจดจำได้โดยทั่วไป ผมจะละเว้นการพูดถึง quantization ที่นี่เพราะโดยปกติเป็นผลเล็กน้อย แม้บางครั้งมันจะมีความสำคัญอย่างยิ่ง

ผลของการสุ่มตัวอย่างที่มีช่องว่างเท่าๆ กันคือ aliasing; ความถี่ที่สูงกว่า Nyquist frequency (ซึ่งมีสองตัวอย่างในรอบ) จะถูก alias ให้เป็นความถี่ที่ต่ำกว่า นี่เป็นผลสืบเนื่องโดยตรงจากเอกลักษณ์ตรีโกณมิติ

สรุป: where a is the positive remainder after removing the integer number of rotations, k (we always use rotations in discussing results, and use radians while applying the calculus, just as we use base-10 logs and base-e logs), and n is the step number. If a > 1/2, then we can write the above as

ดังนั้นแบนด์ที่ถูก alias จะมีขนาดน้อยกว่าครึ่งรอบ บวกลบ หากเราใช้ฟังก์ชันตรีโกณมิติจริงสองตัวคือ sine และ cosine เราจะมีคู่ของ eigenfunctions สำหรับแต่ละความถี่ และแบนด์จะอยู่ระหว่าง 0 ถึง 1/2 รอบ แต่เมื่อใช้สัญกรณ์ complex exponential เราจะมี one eigenfunction สำหรับแต่ละความถี่ และแบนด์จะขยายจาก –1/2 ถึง 1/2 รอบ การหลีกเลี่ยง eigenvalue ที่ซ้ำซ้อนนี้เป็นส่วนหนึ่งของเหตุผลที่ความถี่เชิงซ้อนจัดการได้ง่ายกว่าฟังก์ชัน sine และ cosine จริงๆ อัตราสุ่มตัวอย่างสูงสุดที่ไม่เกิด aliasing คือสองตัวอย่างในรอบ เรียกว่า the Nyquist rate จากตัวอย่างไม่สามารถกู้คืนสัญญาณดั้งเดิมภายในความถี่ที่ถูก alias ได้; มีเพียงความถี่พื้นฐานที่ตกอยู่ในช่วงของความถี่ที่ไม่ถูก alias (–1/2 ถึง 1/2) เท่านั้นที่สามารถกำหนดได้อย่างไม่กำกวม สัญญาณจากความถี่ที่ถูก alias หลายความถี่จะไหลมารวมกันเป็นความถี่เดียวในแบนด์และถูกรวมทางพีชคณิต; นั่นคือสิ่งที่เราเห็นเมื่อการสุ่มตัวอย่างถูกทำแล้ว ดังนั้นการบวกหรือลบอาจเกิดขึ้นระหว่างการ aliasing และเราไม่สามารถทราบได้จากสัญญาณที่ถูก alias ว่าสิ่งที่มีเดิมคืออะไร ที่อัตราสุ่มตัวอย่างสูงสุดบางกรณีจะไม่สามารถแยกความแตกต่างบางอย่างได้ ดังนั้นความถี่ที่ไม่ถูก alias ต้องอยู่ภายในแบนด์

สรุป: We shall stretch (compress) time so we can take the sampling rate to be one per unit time, because this makes things much easier and brings experiences from the milli- and microsecond range to those which may take days or even years between samples. It is always wise to adopt a standard notation and framework of thinking of diverse things—one field of application may suggest things to do in the other. I have found it of great value to do so whenever possible—remove the extraneous scale factors and get to the basic expressions. (But then I was originally trained as a mathematician.)

Aliasing เป็นผลพื้นฐานของการสุ่มตัวอย่างและไม่มีความเกี่ยวข้องกับวิธีที่สัญญาณถูกประมวลผล ผมพบว่าสะดวกที่จะคิดว่าเมื่อได้ตัวอย่างแล้ว ทุกความถี่จะอยู่ในแบนด์ของ Nyquist และดังนั้นเราไม่จำเป็นต้องวาดการขยายเชิง period ของสิ่งใดๆ อีกต่อไป เพราะความถี่สูงได้ถูก alias ลงสู่แบนด์ล่างและไม่อยู่บนที่นั่นอีกต่อไป นี่ช่วยประหยัดการคิดได้มาก! การกระทำของการสุ่มตัวอย่างสร้างสัญญาณที่ถูก aliased ซึ่งเราต้องใช้

ผมขอเล่าเรื่องสามเรื่องที่ใช้เพียงแนวคิดการสุ่มตัวอย่างและ aliasing เรื่องแรกผมพยายามคำนวณคำตอบเชิงตัวเลขของระบบสมการเชิงอนุพันธ์ธรรมดาจำนวน 28 สมการและผมต้องรู้ว่าอัตราการสุ่มตัวอย่างที่ควรใช้เป็นเท่าใด (ขนาดสเต็ปของวิธีแก้เชิงตัวเลขก็คืออัตราการสุ่มตัวอย่างที่คุณใช้) เพราะถ้ามันเล็กกว่าที่คาดครึ่งหนึ่ง ค่าใช้จ่ายในการคำนวณจะมากขึ้นประมาณสองเท่า สำหรับวิธีเชิงตัวเลขที่นิยมและใช้งานได้จริง ทฤษฎีทางคณิตศาสตร์กำหนดขนาดสเต็ปจากอนุพันธ์ลำดับที่ห้า ใครจะรู้ขอบเขตนั้น? ไม่มีใคร! แต่เมื่อมองเป็นการสุ่มตัวอย่าง aliasing จะเริ่มที่สองตัวอย่างต่อรอบสำหรับความถี่สูงสุดที่มีอยู่ โดยมีเงื่อนไข ว่าคุณมีข้อมูลจากลบถึงบวกอนันต์ เมื่อมีข้อมูลเพียงช่วงสั้นที่สุดไม่เกินห้าจุด ผมจึงคาดคร่าวๆ ว่าจะต้องการอัตราประมาณสี่ตัวอย่างต่อรอบ และสุดท้ายเมื่อมีข้อมูลเพียงด้านเดียว อาจต้องเพิ่มอีกสองเท่า; ทั้งหมดประมาณแปดตัวอย่างต่อรอบ

ทั้งทฤษฎีและการทดสอบเชิงตัวเลขแสดงว่าเมื่อประมาณเจ็ดตัวอย่างต่อรอบคุณจะอยู่ใกล้ขอบของความแม่นยำ (ต่อสเต็ป) และที่สิบตัวอย่างต่อรอบคุณจะปลอดภัยมาก ดังนั้นผมจึงอธิบายสถานการณ์ให้พวกเขาฟังและขอความถี่สูงสุดที่คาดว่าจะมีในคำตอบ พวกเขาเห็นชอบกับคำขอ และหลังจากผ่านไปหลายวันพวกเขาบอกว่าผมต้องกังวลเกี่ยวกับความถี่สูงถึง 10 รอบต่อวินาที และพวกเขาจะรับผิดชอบความถี่ที่สูงกว่า พวกเขาถูกต้อง และคำตอบก็น่าพอใจ นี่คือการทำงานของ sampling theorem!

เรื่องที่สองเกี่ยวข้องกับข้อสังเกตที่ผมได้ยินโดยบังเอิญในโถงของ Bell Telephone Laboratories ว่าผู้รับเหมารายหนึ่งในฝั่งตะวันตกของสหรัฐฯ มีปัญหากับการจำลองการยิงจรวด Nike และใช้การเว้นช่องว่าง 1/1,000 ถึง 1/10,000 วินาที ผมหัวเราะทันทีและบอกว่าต้องมีความผิดพลาดบางอย่าง; 70 ถึง 100 ตัวอย่างก็น่าจะเพียงพอสำหรับโมเดลที่เขาใช้ ปรากฏว่าพวกเขามีตัวเลขฐานสองตำแหน่งเจ็ดไปทางซ้าย ซึ่งใหญ่เกินไปถึง 128 เท่า! การดีบักโปรแกรมขนาดใหญ่ข้ามทวีปโดยอาศัย sampling theorem!

เรื่องที่สามคือกลุ่มหนึ่งที่ Naval Postgraduate School กำลังปรับความถี่สูงลงไปยังช่วงที่พวกเขาสามารถสุ่มตัวอย่างได้ตามที่เข้าใจไว้ แต่ผมสังเกตว่าถ้าพวกเขาสุ่มตัวอย่างความถี่สูงอย่างชาญฉลาด การกระทำของการสุ่มตัวอย่างเองจะทำหน้าที่เป็นการมอดูเลต (alias) ลงมา หลังจากโต้เถียงกันไม่กี่วัน พวกเขาถอดชั้นอุปกรณ์ลดความถี่ออก และที่เหลือของอุปกรณ์ทำงานได้ดีขึ้น! อีกครั้งผมต้องการความเข้าใจที่แน่นแฟ้นเกี่ยวกับผลของ aliasing ที่เกิดจากการสุ่มตัวอย่าง นี่เป็นตัวอย่างอีกหนึ่งว่าทำไมคุณต้องรู้พื้นฐานอย่างจริงจัง; ส่วนที่ซับซ้อนจะตามมาอย่างง่ายดายและคุณจะทำสิ่งที่พวกเขาไม่เคยบอกคุณได้

การสุ่มตัวอย่างเป็นรากฐานของวิธีที่เราประมวลผลข้อมูลเมื่อใช้คอมพิวเตอร์ดิจิทัล และเมื่อเราเข้าใจว่าสัญญาณคืออะไรและการสุ่มตัวอย่างทำอะไรกับสัญญาณแล้ว เราสามารถหันไปศึกษารายละเอียดของการประมวลผลสัญญาณได้อย่างปลอดภัย

ก่อนอื่นเราจะพูดถึง nonrecursive filters ซึ่งมีจุดประสงค์เพื่อให้ผ่านความถี่บางช่วงและหยุดความถี่อื่น ปัญหานี้เกิดขึ้นครั้งแรกที่บริษัทโทรศัพท์เมื่อต้องการว่า ถ้าข้อความเสียงหนึ่งมีความถี่ทั้งหมดถูกย้ายขึ้นไป (modulated) เหนือช่วงของอีกข้อความหนึ่ง สัญญาณสองชุดสามารถถูกรวมแล้วส่งผ่านสายเดียวกัน และที่ปลายทางอีกด้านก็กรองแยกออกและสัญญาณที่สูงกว่าถูกลด (demodulated) กลับสู่ความถี่ดั้งเดิม การย้ายช่วงนี้เป็นเพียงการคูณด้วยฟังก์ชันไซน์ และการเลือกแบนด์หนึ่ง (single-sideband modulation) ของสองความถี่ที่เกิดขึ้น ตามเอกลักษณ์ตรีโกณมิติต่อไปนี้ (คราวนี้เราใช้ฟังก์ชันจริง):

ไม่มีอะไรลึกลับเกี่ยวกับการย้ายความถี่ (modulation) ของสัญญาณ; มันเป็นเพียงรูปแบบหนึ่งของเอกลักษณ์ตรีโกณมิติ

ฟิลเตอร์แบบ nonrecursive ที่เราจะพิจารณาก่อนเป็นพวกประเภท smoothing โดยอินพุตคือค่าต่างๆ u(t) = u(n) = _u_n และเอาต์พุตคือ

สรุป: The nonrecursive filters we will consider first are mainly of the smoothing type, where the input is the values u(t) = u(n) = _u_n and the output is

ผมต้องเตือนคุณเกี่ยวกับ least squares (วิธีกำลังสองน้อยสุด) เพราะมันมีบทบาทพื้นฐานในสิ่งที่เราจะทำ ดังนั้นผมจะออกแบบ smoothing filter เพื่อแสดงให้เห็นว่าฟิลเตอร์สามารถเกิดขึ้นได้อย่างไร สมมติว่าเรามีสัญญาณที่ถูกเติมด้วย “noise” และต้องการทำให้เรียบ หรือลบสัญญาณรบกวน เราจะสมมติว่าเหมาะสมที่จะ fit a straight line กับห้าจุดติดต่อกันของข้อมูลในความหมาย least-squares แล้วนำค่าที่อยู่ตรงกลางบนเส้นนั้นเป็น “ค่าที่เรียบของฟังก์ชัน” ที่จุดนั้น

Figure 14.1—การพอดีกับเส้นตรง

สรุป: Figure 14.1—Fitting a straight line

Least squares กล่าวว่าเราควรลดผลรวมของกำลังสองของความต่างระหว่างข้อมูลและจุดบนเส้น กล่าวคือ ให้ลด

พารามิเตอร์ที่ใช้ในการแตกต่างเพื่อหาค่าต่ำนั้นคืออะไร? พวกมันคือ a และ b, ไม่ใช่ t (ซึ่งตอนนี้เป็นตัวแปรเชิงดิสริต k) และ u. เส้นตรงขึ้นอยู่กับพารามิเตอร์ a และ b ซึ่งมักเป็นสิ่งที่ทำให้ผู้เรียนสะดุด; พารามิเตอร์ของสมการคือ ตัวแปรสำหรับการหาค่าต่ำสุด! ดังนั้นเมื่อดิฟเฟอเรนเชียลตาม a และ b และตั้งอนุพันธ์เป็นศูนย์เพื่อหาค่าต่ำสุด เราจะได้:

สรุป: What are the parameters to use in the differentiation to find the minimum? They are the a and the b, not the t (now the discrete variable k), and u. The line depends on the parameters a and b, and this is often a stumbling block for the student; the parameters of the equation are the variables for minimization! Hence on differentiating with respect to a and b, and equating the derivatives to zero to get the minimum, we have:

จากสมการบนสุดเราได้

ซึ่งเป็นเพียงค่าเฉลี่ยของห้าค่าติดกัน เมื่อคุณคิดถึงวิธีการคำนวณสำหรับ a ค่าที่ถูกเรียบ ให้คิดถึงข้อมูลในคอลัมน์แนวตั้ง Figure 14.2 โดยมีค่าสัมประสิทธิ์แต่ละตัวเป็น 1/5 ซึ่งเป็นการถ่วงน้ำหนักวิ่งของข้อมูล; จากนั้นคุณอาจคิดถึงมันเป็น window ที่มองผ่านข้อมูล โดยที่ “รูปร่าง” ของหน้าต่างคือสัมประสิทธิ์ของฟิลเตอร์ ซึ่งในกรณีนี้การทำให้เรียบเป็นแบบสม่ำเสมอ

สรุป: which is simply the average of the five adjacent values. When you think about how to carry out the computation for a, the smoothed value, think of the data in a vertical column, Figure 14.2, with the coefficients each 1/5, as a running weighting of the data; then you can think of it as a window through which you look at the data, with the “shape” of the window being the coefficients of the filter, this case of smoothing being uniform in size.

ถ้าเราใช้จุดที่วางอย่างสมมาตรราว 2k + 1 เราจะได้ค่าเฉลี่ยวิ่งของจุดข้อมูลเป็นค่าที่เรียบซึ่งควรจะกำจัดเสียงรบกวน

สรุป: Had we used 2k + 1 symmetrically placed points, we would still have obtained a running average of the data points as the smoothed value which is supposed to eliminate the noise.

สมมติว่าแทนที่จะเป็นเส้นตรง เราทำการเรียบโดยการพอดีด้วยพาราโบลา (Figure 14.3):

สรุป: Suppose instead of a straight line we had smoothed by fitting a quadratic, Figure 14.3:

สรุป: Setting up the difference of the squares and differentiating this time with respect to a, b, and c we get

เพื่อลบ c ซึ่งเราไม่ต้องการ เราคูณสมการบนด้วย 17 และสมการล่างด้วย –5 แล้วบวกกัน จะได้

สรุป: To eliminate c, which we do not need, we multiply the top equation by 17 and the lower equation by –5, and add to get

หากเราย้ายสูตรเรียบที่ได้จาก least-squares สองสูตรนี้ไปไว้ในตำแหน่งที่เหมาะสมรอบจุด n เราจะได้

สรุป: If we now shift these two least-squares-derived smoothing formulas to their proper places about the point n, we would have

ดังนั้น eigenvalue ที่ความถี่ ω (transfer function) คือ โดยตรีโกณมิติขั้นพื้นฐาน

สรุป: Hence the eigenvalue at the frequency ω (the transfer function) is, by elementary trigonometry,

สิ่งเหล่านี้สามารถร่างได้ง่ายพร้อมกับการเรียบ 2k + 1 โดยเส้นตรง Figures 14.4 และ 14.5.

Figure 14.4—ฟังก์ชันการถ่ายโอนสำหรับการทำให้เรียบโดย least squares (เส้นตรง)

สรุป: Figure 14.4—Transfer function for smoothing by least squares straight lines

Smoothing formulas มีสมมาตรศูนย์กลางในสัมประสิทธิ์ของพวกมัน ในขณะที่ differentiating formulas มีสมมาตรแบบคี่ จากสูตรที่เห็นชัด

สำหรับสูตรการทำให้เรียบ เราจะเห็นว่าเส้นของ eigenvalue (transfer function) เป็นการขยายเชิง Fourier ในรูปของฟังก์ชัน cosine ในขณะที่สูตรการดิฟเฟอเรนเชียลจะเป็นการขยายในรูปของ sine ดังนั้นเมื่อมี transfer function ที่ต้องการ จะกลายเป็นปัญหาของการหา Fourier expansion ของฟังก์ชันที่กำหนด

สรุป: we see any formula is the sum of an odd and an even function, hence any nonrecursive digital filter is the sum of a smoothing filter and a differentiating filter. When we have mastered these two special cases we have the general case in hand.

เราใช้เงื่อนไขความตั้งฉาก (ซึ่งสามารถหาได้จากตรีโกณมิติพื้นฐานและการอินทิกรัลง่ายๆ)

สรุป: Now to a brief recapitulation of Fourier series. If we assume that the arbitrary function f(t) is represented

สรุป: we use the orthogonality conditions (they can be found by elementary trigonometry and simple integrations)

สรุป: to get

ตามที่กล่าวข้างต้น การขยายเชิงรูปแบบจะให้สัมประสิทธิ์

สรุป: Next we need to prove the fit of any orthogonal set of functions gives the least-squares fit. Let the set of orthogonal functions be {fk(t)} with weight function w(t) ≥ 0. Orthogonality means

สรุป: As above, the formal expansion will give the coefficients

ตอนนี้พิจารณาการฟิตแบบ least-squares ของชุด orthogonal สมบูรณ์โดยใช้สัมประสิทธิ์ตัวพิมพ์ใหญ่ C_k เรามี

สรุป: when the functions are real, and in the case of complex functions we multiply through by the complex conjugate function.

และเราจะเห็นจากการจัดเรียงว่า C_k = _c_k ดังนั้นการฟิตด้วยฟังก์ชันออร์โธโกนอลทุกแบบเป็นการฟิตแบบ least-squares ไม่ว่าจะใช้ชุดฟังก์ชันออร์โธโกนอลใดก็ตาม

ถ้าเราติดตามความไม่เท่ากันไว้ เราจะได้ ในกรณีทั่วไปโดยอสมการของ Bessel:

สรุป: and we see from a rearrangement that _C_k = _c_k. Hence all orthogonal-function fits are least-squares fits, regardless of the set of orthogonal functions used.

สรุป: If we keep track of the inequality we find we will have, in the general case by Bessel’s inequality,

สรุป: for the number of coefficients taken in the sum, and this provides a running test for when you have taken enough terms in a finite approximation. In practice this has proven to be a very useful guide to how many terms to take in a Fourier expansion.