مشكلة القياس
نظريًا، الـ DFT بتاع sinusoid صافية هو bin (خانة) واحد مش صفر. عمليًا نادرًا ما بيبقى كده: طاقة النغمة الواحدة بتتفرش على bins كتير جنبها، وده اللي اسمه الـ spectral leakage (التسرّب الطيفي). الدرس اللي فات رجّع الـ leakage لسببه — window الرصد المحدودة بتضرب الـ signal في بوابة مستطيلة، والضرب في الزمن هو convolution في الـ frequency، فكل خط طيفي حقيقي بيتبدّل بنسخة متزحزحة من spectrum الـ window نفسها. والدرس ده عن اللي ده بيعمله في القياس: إزاي الـ leakage بيبوّظ الـ amplitude اللي بتقراه من bin، وإزاي تخلّيه يختفي لما تقدر، وإزاي تحدّه لما متقدرش.
والرهان عملي. اللي بيقرا spectrum analyzer محتاج يعرف هل القمة عند −40 dB عشان النغمة ضعيفة فعلًا، ولا عشان leakage من جار قوي علّى أرضية الـ noise، ولا عشان النغمة وقعت بين binين فاتقاست أقل بحوالي 4 dB. التلاتة كلهم ظواهر leakage، ولكل واحدة علاج مختلف.
الـ coherent sampling: إمتى الـ leakage بيختفي
فيه حالة واحدة الـ rectangular window فيها مبتعملش أي leakage. spectrum الـ window — الـ Dirichlet kernel (periodic sinc) — ليه أصفار عند كل bin ما عدا اللي متمركز عليه. فلو frequency النغمة وقعت بالظبط على bin من bins الـ DFT، كل bin تاني بيقعد على صفر من الأصفار دي والنغمة بتظهر خط واحد نضيف. والتوافق ده اسمه الـ coherent sampling (أخذ العيّنات المتوافق)، وبيحصل بالظبط لما الـ frequency تبقى عدد صحيح من الدورات الكاملة على window الرصد:

الـ coherent sampling هو السبب إن معامل معايرة الأجهزة بتربط الـ signal generator والـ digitizer بمرجع زمني واحد وبتختار N بحيث نغمة الاختبار تقع على bin: كده الـ leakage بيتشال من المصدر بدل ما يتصلّح بعدين. بس ده مبينفعش غير لما تكون متحكّم في الـ signal. أما نغمة جاية من العالم الخارجي — carrier، أو اهتزاز، أو نبضة قلب — فغالبًا هتقع بين الـ bins، وساعتها الـ leakage بيبقى حتمي ولازم يتدار بـ window.
الـ scalloping loss: تأثير سور الأوتاد
الـ DFT مبيبلّغش عن الـ spectrum غير عند مراكز الـ bins بتاعته — يعني بياخد samples من الـ spectrum المستمر اللي تحت عند N نقطة منفصلة، زي ما تكون بتبص على منظر من ورا سور أوتاد. والنغمة اللي بتقع بين binين بتتقاس على جنب الـ main lobe بتاع الـ window مش على قمّته، فالـ amplitude بتاعها بيتقري أوطى. وأوحش حالة نغمة واقعة في نص المسافة بين binين بالظبط.
في الـ rectangular window النقص ده في أوحش الحالات بيوصل لـ 3.92 dB — يعني الـ amplitude بيتقري عند 64% بس من قيمته الحقيقية — وده غلط كبير كفاية إنه يفرق في أي قياس amplitude. والنقص الحتمي ده اللي بيعتمد على الـ frequency هو الـ scalloping loss (خسارة التموّج) (واسمه كمان picket-fence loss). وهو مش noise، ده bias تقدر تتوقّعه من مكان النغمة بالنسبة للـ bins. والـ windows اللي الـ main lobe بتاعها أعرض وأكتر استواء بتتموّج أقل: الـ Hann window بتنزّل أوحش حالة لـ 1.42 dB، وwindows الـ flat-top متصمّمة مخصوص عشان تخلّيها تحت 0.1 dB — وعشان كده هي الاختيار الافتراضي للقياس الدقيق للـ amplitude مع إن الـ main lobe العريض بتاعها بيبوّظ الـ frequency resolution.
الـ processing gain والـ equivalent noise bandwidth
الـ leakage بيحكم كمان إزاي الـ DFT المتعمل بـ window بيقيس الـ noise والقدرة، وده الكوبري للـ power spectral density في الوحدة 9، الدرس 1. الـ window هي filter، وكل bin في الـ DFT مبيعدّيش الـ frequency بتاعته بس، لأ بيعدّي شريحة noise حواليه شكلها بيحدّده الـ main lobe والـ side lobes. وعرض الـ rectangular filter المثالي اللي بيعدّي نفس القدر من قدرة الـ noise هو الـ equivalent noise bandwidth (عرض النطاق الضوضائي المكافئ) أو ENBW:
وده اللي بيخلّيك تحوّل magnitude spectrum متعمل بـ window لـ power spectral density (كثافة طيف استطاعية) متعايرة بوحدة الواط لكل هرتز — الوحدة اللي الوحدة 9 بتستخدمها من غير ما تطلّعها. مربّع magnitude خط واحد قدرة؛ ولما تقسمه على الـ sampling rate وطاقة الـ window بيتحوّل لـ كثافة:
ونفس الـ ENBW اللي بيعاير أرضية الـ noise هو السبب إن الـ window اللي الـ leakage فيها قليل بتكلّفك حساسية للنغمات الضعيفة: إنك تفرش noise bin على عرض binين بيعلّي أرضية الـ noise بمقدار 10 log₁₀(2) ≈ 3 dB بالنسبة للـ rectangular window. فاختيار الـ window دايمًا مقايضة تلاتية بين الـ frequency resolution، ودقة الـ amplitude، والقدرة إنك تشوف signal صغيرة جنب كبيرة.
اختيار الـ window
المرجع الكلاسيكي هو مسح فريدريك هاريس سنة 1978، اللي بيجدول المقاييس دي لعشرات الـ windows. والخمسة اللي تحت بيغطّوا المدى المفيد من «من غير window» لـ «كتم side lobes متطرّف»:
| الـ window | الـ main lobe −3 dB (bins) | أعلى side lobe (dB) | الـ scalloping loss (dB) | ENBW (bins) |
|---|---|---|---|---|
| rectangular | 0.89 | −13 | 3.92 | 1.00 |
| Hann | 1.44 | −32 | 1.42 | 1.50 |
| Hamming | 1.30 | −43 | 1.75 | 1.36 |
| Blackman | 1.68 | −58 | 1.10 | 1.73 |
| Blackman-Harris (أربع حدود) | 1.90 | −92 | 0.83 | 2.00 |
اقرا الجدول كمقايضة واحدة بتمسحها من فوق لتحت: كل ما الـ window تتدرّج أكتر، أعلى side lobe بينزل (من −13 dB لـ −92 dB، فالنغمة الضعيفة بتبان جنب القوية) والـ scalloping loss بيقل — بس الـ main lobe بيوسع والـ ENBW بيكبر، فالـ frequency resolution والحساسية للـ noise بيوحشوا. وصف Blackman-Harris هو الطرف اللي الـ leakage فيه قليل: الـ side lobes بتوعه عند −92 dB تقدر تكشف نغمة أقل من جارتها بـ 90 dB، بتمن main lobe أعرض من ضعف الـ rectangular.
استراتيجيات عملية
- الـ spectral leakage بصمة الـ window المحدودة: الخط الحقيقي بيتبدّل بنسخة من spectrum الـ window، فطاقة نغمة واحدة بتتفرش على bins كتير.
- الـ coherent sampling — نغمة عند f₀ = k·f_s/N بالظبط — بيطلّع leakage صفر، لأن كل bin تاني بيقع على صفر من spectrum الـ window. ومبينفعش غير لما تكون متحكّم في الـ signal.
- الـ scalloping loss نقص متوقّع في الـ amplitude للنغمات اللي واقعة بين الـ bins: 3.92 dB في أوحش حالات الـ rectangular، و1.42 dB لـ Hann، وتحت 0.1 dB للـ flat-top.
- الـ equivalent noise bandwidth (ENBW = N·Σw²/(Σw)²) هو عرض الـ rectangular filter اللي بيعدّي نفس قدرة الـ noise؛ وبيعاير الـ DFT المتعمل بـ window لـ spectral density بوحدة W/Hz.
- كل window بتقايض الـ frequency resolution بمستوى الـ side lobes ودقة الـ amplitude والحساسية للـ noise؛ وجدول هاريس 1978 بيقيس المقايضة لكل واحدة.
- القاعدة العملية: اعمل coherent sampling لو تقدر؛ وflat-top للـ amplitude؛ وBlackman-Harris للـ dynamic range؛ وصلّح دايمًا للـ coherent gain والـ ENBW قبل ما تقول قدرة مطلقة.