ខ្ញុំបានដឹងនៅថ្ងៃមួយថា កម្មវិធីតែឯងបានក្លាយទៅជាយន្តការ។ ខ្ញុំបានបង្កើតរសជាតិសម្រាប់ភាពសាមញ្ញ ហើយបញ្ហាចាប់ផ្តើមមានលក្ខណៈតិចជាងបទពិសោធន៍សិក្សា ហើយបានប្រែក្លាយទៅជាលំហាត់យន្តការដែលស្រដៀងនឹងការងារមមាញឹកច្រើនជាងការស្វែងរកការពិត។ ខ្ញុំបានដឹងថាខ្ញុំតែងតែធ្វើការក្នុងភាពអរូបី។ ខ្ញុំបានបត់បែន ខ្ញុំបានទទួលវិញ្ញាបនបត្រជាច្រើនផ្នែកសន្តិសុខអ៊ីនធឺណិត/ការជ្រៀតចូល ហើយប្រាកដណាស់ថាវាគួរឱ្យចាប់អារម្មណ៍។ ប៉ុន្តែ វាមិនបានជួយសម្រាលការចង់ដឹងចង់ឃើញនៅទីបំផុត។ ខ្ញុំបានដឹងថាខ្ញុំត្រូវចាប់ផ្តើមប៉ះពិភពរូបវន្ត។ ជួយអន្តរកម្មជាមួយបាតុភូតរូបវន្ត។ ដូច្នេះ ខ្ញុំបានចាប់ផ្តើមសាងសង់ ELI (electromagnetic lookup interface) ។ ចាប់ផ្តើមជាមួយនឹង RF, DSP, សមីការ, សំលេងរំខាន, Raspberry Pi's ជាមួយ SDRs ។ វាជាភ្នំខ្ពស់នៅខាងលើ ហើយខ្ញុំនៅបាតរណ្តៅជ្រៅមួយ។ អត្ថបទទាំងនេះជាមធ្យោបាយមួយសម្រាប់ខ្ញុំក្នុងការរំលាយ និងព្យាយាមពន្យល់ពីគំនិតដែលខ្ញុំរៀនក្នុងដំណើររបស់ខ្ញុំ។ ពីព្រោះប្រសិនបើខ្ញុំអាចពន្យល់ពីអ្វីដែលខ្ញុំរៀនបាន ឱកាសកាន់តែល្អវានឹងនៅតែមាន។ សៀវភៅដែលខ្ញុំកំពុងសិក្សាឥឡូវនេះគឺ "Understand Digital Signal Processing" ដោយ Richard Lyons។ វាជាសៀវភៅល្អ ហើយខ្ញុំរីករាយនឹងវា។ ខ្ញុំនឹងព្យាយាមទៅតាមជំពូកនីមួយៗ ដើម្បីពន្យល់ពីគំនិត និងអ្វីដែលខ្ញុំរៀន។ នេះមានន័យថាជាមធ្យោបាយមួយដើម្បីបង្ខំខ្ញុំឱ្យឆ្លងកាត់ 't' របស់ខ្ញុំ និងដាក់ 'i' របស់ខ្ញុំ ក្នុងដំណើរការសិក្សារបស់ខ្ញុំ។ ជាមួយនឹងស៊េរីនេះ ខ្ញុំនឹងសរសេរកូដអ្វីដែលចាំបាច់ដោយប្រើប្លុកកូដក្នុងបន្ទាត់ ឬនៅពេលដែលវាទំនើប ខ្ញុំនឹងផ្តល់កូដ repo ។ ខ្ញុំសរសេរកូដជា Rust ។ ជាមួយនឹងនោះ សូមចាប់ផ្តើម។ លំដាប់ដាច់ដោយឡែក និងការសម្គាល់ : អថេរពេលវេលាឯករាជ្យដែលត្រូវបានកាត់ជាបំណែកដូច្នេះតម្លៃនៃសញ្ញាមួយត្រូវបានគេស្គាល់តែនៅក្នុងពេលដាច់ដោយឡែកប៉ុណ្ណោះ។ សញ្ញាពេលវេលាដាច់ដោយឡែក ដូច្នេះ អ្វីទៅជា ? ជាការស្រួល យើងអាចនិយាយបានថាវាជាអ្វីមួយដែលត្រូវបានបំបែកទៅជាបំណែកបុគ្គលជំនួសឱ្យការបន្ត។ ដាច់ដោយឡែក ដូច្នេះ គ្រាន់តែជាសញ្ញាដែលបន្តដែលត្រូវបានកំណត់នៅពេលជាក់លាក់ប៉ុណ្ណោះ។ សញ្ញាពេលវេលាដាច់ដោយឡែក ចុះ វិញ? ភាគច្រើនជាការបង្គត់ការវាស់វែងទៅតម្លៃដែលជិតបំផុតដែលប្រព័ន្ធរបស់អ្នកអាចវាស់បាន។ ការកាត់ជាបំណែក ដូច្នេះ សរុបមក គ្រាន់តែជាការដាក់បំណែកនៃសញ្ញាដែលបន្តទៅក្នុងកន្លែងដែលប្រព័ន្ធរបស់អ្នកអាចវាស់វាបាន។ ដូចពាក្យ Academic ភាគច្រើនដែរ វាជាពាក្យដែលស្តាប់ទៅអស្ចារ្យសម្រាប់គំនិតដែលសាមញ្ញណាស់។ សញ្ញាពេលវេលាដាច់ដោយឡែក សូមមើលការបង្ហាញជាទស្សនីយភាព: ខ្សែដែលបន្តគឺអាណាឡូក វាងាយស្រួល គ្មានការឈប់ឬបញ្ចប់។ ចំណុច និងបន្ទាត់តំណាងឱ្យបំណែកដាច់ដោយឡែកនៃបន្ទាត់នោះ ដែលប្រព័ន្ធអាចវាស់ និងយល់បាន។ ហេតុអ្វីយើងត្រូវធ្វើបែបនេះ? ជាការស្រួល កុំព្យូទ័រត្រូវការគំរូនៅចន្លោះពេលទៀងទាត់ ts វិនាទី (s តំណាងឱ្យការគំរូ និង t តំណាងឱ្យរយៈពេលគំរូ) ។ សមីការប្រភេទនេះមើលទៅដូចម្ដេចនៅលើក្រដាស? សូមបំបែកនេះ: - តម្លៃនៃសញ្ញាដែលបន្តត្រូវបានវាស់នៅពេល ( ជាលេខគំរូ) x[n] n n - ប្រេកង់ f0 - ប្រេកង់គំរូ fs វាត្រង់ទៅមុខណាស់។ ដូច្នេះ សូមបម្លែងវាទៅជាកូដ (rust) ដើម្បីឱ្យកាន់តែច្បាស់: use std::f64::consts::PI; fn main() { let f0 = 2.0; let fs = 12.0; let n_samples = 100; let mut signal = Vec::with_capacity(n_samples); for n in 0..n_samples { let n = n as f64; let sample = (2.0 * PI * f0 * n / fs).sin(); signal.push(sample); } println!("{:?}", signal); } ការសម្គាល់ពិតជាឧបសគ្គ។ ដែនប្រេកង់ ខាងលើ បន្ទាត់អាណាឡូកដែលបន្ត និងចំណុចដាច់ដោយឡែកស្ថិតនៅក្នុងដែនពេលវេលា។ ឥឡូវ យើងគួរតែស្វែងយល់ពី ។ ដែនប្រេកង់ សូមមើលការបង្ហាញ: សូមបំបែកដែនទាំងនេះដោយឡែកពីគ្នា: ដែនពេលវេលា: សញ្ញាធ្វើអ្វីក្នុងរយៈពេលប៉ុន្មាន? ដែនប្រេកង់: ប្រេកង់អ្វីដែលមាននៅក្នុងសញ្ញា និងកម្រិតណាដែលវាខ្លាំង? នៅចំណុចនេះ យើងគួរតែបែងចែកទំហំ និងរង្វាស់: ទំហំ: តើអថេរនៅឆ្ងាយប៉ុនណា និងក្នុងទិសដៅណាពីសូន្យ រង្វាស់ តើអថេរនៅឆ្ងាយប៉ុនណាពីសូន្យ ភាពខុសគ្នាគឺទំហំដែលអាចមានលក្ខណៈអវិជ្ជមាន ឬវិជ្ជមាន ហើយរង្វាស់តែងតែមានលក្ខណៈវិជ្ជមាន។ ក្រាហ្វដែនប្រេកង់មានប្រយោជន៍ខ្លាំងណាស់ ព្រោះវាប្រាប់យើងយ៉ាងច្បាស់ថាមានអ្វីខ្លះ និង ប៉ុនណា។ មានថាមពល ដ្យាក្រាមប្លុក ដ្យាក្រាមប្លុកគឺជាវិធីមើលឃើញដ៏សាមញ្ញមួយដើម្បីពិពណ៌នាពីរបៀបដែលសញ្ញាចរាចរតាមប្រព័ន្ធ។ ប្លុកនីមួយៗតំណាងឱ្យប្រតិបត្តិការដែលបានអនុវត្តលើសញ្ញា ហើយព្រួញបង្ហាញពីរបៀបដែលសញ្ញាមានលំហូរពីមួយជំហានទៅមួយជំហានទៀត។ ប្លុក DSP ជាធម្មតារួមមានបីយ៉ាង: សញ្ញា (ទិន្នន័យដែលកំពុងចរាចរ) ប្លុក (ប្រតិបត្តិការដែលបានអនុវត្ត) ព្រួញ (ទិសដៅដែលសញ្ញាកំពុងចរាចរ) ការបង្ហាញ ខ្ញុំចង់កត់សម្គាល់ថាអ្នកនឹងឃើញដូចខាងក្រោមនៅក្នុងប្លុកបូកសរុបធម្មតា: និមិត្តសញ្ញា Σ (ស៊ីគមា) មានន័យថា 'ផលបូក' ក្នុងការសម្គាល់គណិតវិទ្យា។ វាមើលទៅគួរឱ្យខ្លាចជាងការពិត ដូច្នេះសូមបង្ហាញវានៅក្នុងកូដ: fn main() { let x1 = vec![1.0, 2.0, 3.0, 4.0]; let x2 = vec![0.5, 1.0, 1.5, 2.0]; let x3 = vec![2.0, 2.0, 2.0, 2.0]; let mut y = Vec::with_capacity(x1.len()); for n in 0..x1.len() { let y_n = x1[n] + x2[n] + x3[n]; y.push(y_n); } println!("y = {:?}", y); } ត្រង់ទៅមុខណាស់។ ម្តងទៀត ឧបសគ្គគឺនិមិត្តសញ្ញា។ ពេលចូលទៅក្នុងកូដ វាពិតជាត្រង់ទៅមុខណាស់។ ប្រព័ន្ធដាច់ដោយឡែក លីនេអ៊ែរ មិនប្រែប្រួលតាមពេលវេលា យើងបានកំណត់ដាច់ដោយឡែកខាងលើ ដូច្នេះសូមស្វែងយល់ពីលីនេអ៊ែរ: ការដាក់មាត្រដ្ឋានដំណើរការដូចដែលអ្នករំពឹងទុក ការដាក់មាត្រដ្ឋានធាតុចូល ដាក់មាត្រដ្ឋានធាតុចេញក្នុងចំនួនដូចគ្នា។ ការបន្ថែមធាតុចូល បន្ថែមធាតុចេញ ធាតុចូលរួមបញ្ចូល = ធាតុចេញរួមបញ្ចូលតាមរបៀបដូចគ្នា។ សូមមើលសញ្ញាលីនេអ៊ែរដាច់ដោយឡែក ប្រព័ន្ធមិនប្រែប្រួលតាមពេលវេលា ប្រព័ន្ធមិនប្រែប្រួលតាមពេលវេលាគឺជាប្រព័ន្ធដែលការពន្យាពេល/ការផ្លាស់ទីលំនៅនៅលើធាតុចូល បណ្តាលឱ្យមានការពន្យាពេលសមមូលនៅលើធាតុចេញ។ ដើម្បីបង្ហាញគំនិតខាងក្រោមនេះគឺជាការបង្ហាញជាទស្សនីយភាពនៃអ្វីដែលជាប្រព័ន្ធដាច់ដោយឡែក លីនេអ៊ែរ មិនប្រែប្រួលតាមពេលវេលា ប្រព័ន្ធដាច់ដោយឡែក លីនេអ៊ែរ មិនប្រែប្រួលតាមពេលវេលា មានសារៈសំខាន់ ព្រោះវាមានឥរិយាបទដែលអាចទស្សន៍ទាយបាន។ ការធ្វើជាលីនេអ៊ែរ សញ្ញាអាចត្រូវបានដាក់មាត្រដ្ឋាន/រួមបញ្ចូលគ្នាដោយមិនផ្លាស់ប្តូរពីរបៀបដែលប្រព័ន្ធដំណើរការវា។ ការមិនប្រែប្រួលតាមពេលវេលា មានន័យថាប្រព័ន្ធអាចឆ្លើយតបតាមរបៀបដូចគ្នា ដោយមិនគិតពីពេលវេលាដែលសញ្ញាបានបង្ហាញ។ លក្ខណៈសម្បត្តិទាំងនេះអនុញ្ញាតឱ្យសញ្ញាស្មុគស្មាញត្រូវបានយល់ថាជាការរួមបញ្ចូលគ្នានៃសញ្ញាសាមញ្ញ។ នេះធ្វើឱ្យការវិភាគ និងការកែប្រែដោយប្រើឧបករណ៍ដូចជា ការច្រោះ និងការវិភាគប្រេកង់កាន់តែងាយស្រួល។ ជាមួយនឹងនោះ ប្រព័ន្ធដំណើរការសញ្ញាជាញឹកញាប់មាន ។ មានន័យថា លំដាប់នៃប្រតិបត្តិការមួយចំនួនមិនផ្លាស់ប្តូរលទ្ធផលទេ។ លក្ខណៈផ្លាស់ប្តូរ : ការបូកសញ្ញាពីរចូលគ្នាបង្កើតបានផលចេញដូចគ្នា ដោយមិនគិតពីសញ្ញាណាដែលត្រូវបានបូកបញ្ចូលមុន។ ទោះបីជាមើលទៅសាមញ្ញណាស់ក៏ដោយ វាអនុញ្ញាតឱ្យវិស្វកររៀបចំផ្នែកនៃប្រព័ន្ធដំណើរការសញ្ញាឡើងវិញដោយមិនផ្លាស់ប្តូរលទ្ធផល។ នៅពេលដែលប្រព័ន្ធមានភាពស្មុគស្មាញកាន់តែច្រើន ការអាចរៀបចំប្រតិបត្តិការឡើងវិញបាន ក្លាយជាមានប្រយោជន៍សម្រាប់ការធ្វើឱ្យការវិភាគសាមញ្ញ និងការអនុវត្តប្រកបដោយប្រសិទ្ធភាព។ ឧទាហរណ៍ ការឆ្លើយតបតាមការរំញ័រ គំនិតដ៏មានឥទ្ធិពលមួយនៅក្នុង DSP គឺថប្រព័ន្ធ LTI (លីនេអ៊ែរ មិនប្រែប្រួលតាមពេលវេលា) អាចត្រូវបានពិពណ៌នាទាំងស្រុងដោយ ។ ដើម្បីកំណត់វាឱ្យកាន់តែច្បាស់ ការរំញ័រគឺជាការផ្ទុះខ្លីបំផុតដែលប្រើដើម្បីស្ទង់ពីរបៀបដែលប្រព័ន្ធមានឥរិយាបទ។ ការឆ្លើយតបតាមការរំញ័រ ប្រសិនបើយើងបញ្ចូលការរំញ័រទៅក្នុងប្រព័ន្ធ ហើយមើលធាតុចេញរបស់វា យើងនឹងទទួលបាន ។ នៅពេលដែលទទួលបានហើយ យើងអាចកំណត់ពីរបៀបដែលប្រព័ន្ធនឹងប្រតិកម្មចំពោះសញ្ញាធាតុចូលនីមួយៗ។ ការឆ្លើយតបរបស់ប្រព័ន្ធចំពោះការរំញ័រនីមួយៗអាចត្រូវបានបូកបញ្ចូលគ្នាដើម្បីបង្កើតធាតុចេញចុងក្រោយ។ ប្រតិបត្តិការគណិតវិទ្យាដែលអនុវត្តដំណើរការនេះគឺ ។ ការឆ្លើយតបតាមការរំញ័រ ការបូកបញ្ចូលគ្នា ឧទាហរណ៍ការបូកបញ្ចូលគ្នាជាក់ស្តែង ១. សូរស័ព្ទក្នុងបន្ទប់ នៅពេលដែលវិស្វករសូរស័ព្ទចង់យល់ពីរបៀបដែលបន្ទប់ជាក់លាក់មួយប៉ះពាល់ដល់សំឡេង ពួកគេបង្កើតការរំញ័រយ៉ាងខ្លាំង (គិតពីការផ្ទុះប៉េងប៉ោង ការទះដៃ កាំភ្លើងចាប់ផ្តើម ប្រសិនបើពួកគេមានភាពក្លាហាន) ការផ្ទុះ ឬការរំញ័រនោះមានថាមពលនៅទូទាំងប្រេកង់ជាច្រើន។ មីក្រូហ្វូននៅទូទាំងបន្ទប់ថត ហើយការរំញ័រយ៉ាងខ្លាំងបង្ហាញពីសំឡេងរោទិ៍ លំនាំអេកូ និងទំនាក់ទំនងប្រេកង់។ កម្មវិធីទំនើបសម្រាប់សូរស័ព្ទតែងតែប្រើការរំញ័រនេះដើម្បីក្លែងធ្វើត្រាប់តាមសំឡេងបន្ទប់។ ២. វិស្វករគ្រឿង វិស្វករគ្រឿងមានដំណើរការមួយដែលហៅថា ។ ប្រសិនបើពួកគេចង់បានព័ត៌មានអំពីរបៀបដែលម៉ាស៊ីន ឬរចនាសម្ព័ន្ធមានការរំញ័រ ពួកគេវាយវាដោយញញួរដែលមានឧបករណ៍ដើម្បីបញ្ជូនការរំញ័រខ្លាំង។ ឧបករណ៍ចាប់សញ្ញាដែលភ្ជាប់ទៅនឹងម៉ាស៊ីន ឬរចនាសម្ព័ន្ធ វាស់ការរំញ័រនៃការរំញ័រ។ ការរំញ័រនៃការរំញ័របង្ហាញពីប្រេកង់ធម្មជាតិ និងលក្ខណៈនៃការបន្ថយល្បឿនរបស់ប្រព័ន្ធ ដែលប្រាប់វិស្វករពីរបៀបដែលប្រព័ន្ធនឹងមានឥរិយាបទក្រោមលក្ខខណ្ឌប្រតិបត្តិការជាច្រើន។ ការធ្វើតេស្តតាមរបៀប ៣. វិស្វករអគ្គិសនី វិស្វករអគ្គិសនីក៏អនុវត្តការធ្វើតេស្តរំញ័រផងដែរ។ ជាមួយនឹងសៀគ្វីអាណាឡូក ការរំញ័រវ៉ុលខ្លីបំផុតត្រូវបានអនុវត្តទៅតម្រង ឬឧបករណ៍ពង្រីកដែលធាតុចេញត្រូវបានវាស់តាមពេលវេលា។ រូបរាងคลื่นដែលជាលទ្ធផលពីការរំញ័រនេះ វិស្វករអគ្គិសនីអាចកំណត់ពីរបៀបដែលប្រព័ន្ធដំណើរការការរំញ័រ និងប្រេកង់ណាដែលវាពង្រីក។ នេះបញ្ចប់ជំពូកទីមួយនៃការរៀន និងការបកស្រាយ។ វាច្រើនហើយ ប៉ុន្តែបន្តិចម្តងៗកាន់តែងាយស្រួល។ នៅពេលធ្វើបែបនេះ ខ្ញុំបានដឹងថាខ្ញុំពិតជាត្រូវការឱ្យតម្លៃជោគជ័យតូចៗ។ ការចុចតូចៗនៃការយល់ដឹង។ គ្មានជោគជ័យលឿនក្នុងការរៀនរឿងនេះទេ ហើយវាពិតជាត្រូវការការអត់ធ្មត់។ ទោះបីជាមានការខិតខំប្រឹងប្រែងច្រើនក៏ដោយ ការបង្កើតអត្ថបទទាំងនេះគឺជាវិធីដ៏ល្អសម្រាប់ខ្ញុំក្នុងការរំលាយចំណេះដឹងជំពូក និងប្រហែលជាចែករំលែកវាសម្រាប់អ្នកដែលមានការចង់ដឹងចង់ឃើញ។ ការសរុប នេះមិនមែនជាជំពូកទីមួយទាំងមូលទេ គឺគ្រាន់តែជាគំនិតដែលខ្ញុំគិតថាសំខាន់។ ខ្ញុំជាអ្នកចាប់ផ្តើមដំបូងបំផុតក្នុងរឿងនេះ ដូច្នេះប្រសិនបើអ្នកមានការកែតម្រូវ អ្នកអាចបញ្ចេញមតិបានទាំងស្រុង ហើយខ្ញុំនឹងធ្វើការកែតម្រូវចំពោះអត្ថបទ។ ច្រើនណាស់គឺដើម្បីព្យាយាម និងពង្រឹងការយល់ដឹងរបស់ខ្ញុំដោយការសរសេរជាសាធារណៈ ដូច្នេះខ្ញុំមានការលើកទឹកចិត្តមិនឱ្យមើលទៅល្ងង់ពេក។ ល្ងង់បន្តិចប៉ុណ្ណោះ។ ខ្ញុំនឹងបន្តសរសេរតាមជំពូកនៃសៀវភៅ ព្រោះខ្ញុំឃើញថាវាមានប្រយោជន៍សម្រាប់ខ្លួនខ្ញុំ។ វាពិតជាល្អប្រសិនបើមាននរណាម្នាក់រកឃើញថានេះមានប្រយោជន៍ផងដែរ។ ខ្ញុំនឹងនិយាយថា ក្នុងដំណើរការនេះ ជោគជ័យតូចៗគឺជាគន្លឹះ។ ដំណើរការនេះយឺត ប៉ុន្តែការចុចតូចៗនៃការយល់ដឹងទាំងនោះគឺជាការទូទាត់តូចមួយ ខណៈពេលដែលខ្ញុំឡើងភ្នំ។ អ្វីៗទាំងអស់នេះគ្រាន់តែជាការលើកទឹកចិត្តផ្ទៃក្នុងសម្រាប់ចំណេះដឹងដែលបានអនុវត្ត ដើម្បីទទួលបានជំនាញបន្ថែម ដើម្បីយល់ពិភពលោកកាន់តែប្រសើរឡើង។ នៅទីបញ្ចប់ ពេលខ្លះនោះគឺជាការលើកទឹកចិត្តដែលជាប់លាប់បំផុត។