همبستگیِ متقابل میتواند جابهجاییِ یک الگویِ عددی را نشان دهد، اما علامتِ lag به ترتیبِ دو ورودی و تعریفِ محاسبه وابسته است. همچنین یک بیشینه لزوماً تنها بیشینهٔ ممکن نیست. این تمرین دو دنبالهٔ کاملاً ساختگی را با np.correlate و حلقهٔ مستقل مقایسه میکند؛ هیچ متن، صوتِ مشتری یا مدلِ همترازی در آن اجرا نشده است.
قراردادِ lag را پیش از عدد بنویسیم
در قراردادِ NumPy، برایِ دادهٔ حقیقی c[k] مجموعِ a[n+k]×v[n] رویِ همپوشانی است. modeِ full همهٔ lagها را از−(طولِ v−۱) تا طولِ a−۱ میسازد. تابعِ correlate پیشفرضِ valid دارد، پس در این کد full را صریح مینویسیم و محدودهٔ lag را هم کنارِ آرایهٔ خروجی نگه میداریم.
شمارهٔ خانه در آرایهٔ خروجی، خودِ lag نیست. اگر بدونِ افزودنِ مبدأِ منفی، اندیسِ argmax را زمانِ تأخیر بنامیم، نتیجه عوض میشود. این صفحه برایِ هر مقدارِ همبستگی، lagِ متناظر را در همان دفتر ثبت و با حلقهای که فرمولِ اعلامشده را مستقیم حساب میکند مقایسه میکند.
یک الگو را دو نمونه عقب بیندازیم
مرجعِ اصیل[۰،۱،−۲،۴،۰،۰] است. delayed را با افزودنِ دو صفر به ابتدایِ همان مرجع میسازیم، پس هشت نمونه دارد و جابهجاییِ ساختگی از قبل معلوم است. ورودیِ اولِ correlate،delayed و ورودیِ دوم،reference است؛ بیشینهٔیگانهٔاین نمونه در lagِ مثبتِ ۲ و مقدارِ ۲۱ پیدا میشود.
عددِ ۲۱ از۱²+(−۲)²+۴²=۲۱ در همپوشانیِ درست میآید. این مقدار ضریبِ همبستگیِ نرمالشدهٔبینِ−۱و۱ نیست؛ ما جمعِ ضربِ خام را حساب کردهایم. بزرگیِ آن را کیفیتِ مدل یا اطمینانِ ۲۱درصدی نمینامیم. همهٔصفرها و علامتها در JSONِ مرجع آمدهاند.
با جابهجاییِ دو ورودی،علامت عوض میشود
در آزمایشِ جدا،correlate(reference,delayed,full) اجرا میشود. بیشینه باز هم۲۱ است،اما lagِ آن−۲ است. تمامِ آرایهٔخروجی ومرجعِ حلقه برایِ هر دو ترتیب کنترل میشوند؛ فقط دو عددِ بیشینه با هم مقایسه نشدهاند. این تغییرِ علامت پیامدِ تعریفِ همین عملیات است،نه اختلافِ واقعیِ دو ساعت.
| ورودیِ اول،ورودیِ دوم | lagِ بیشینه | مقدارِ خام |
|---|---|---|
| delayed،reference | +۲نمونه | ۲۱ |
| reference،delayed | −۲نمونه | ۲۱ |
اگر قراردادِ دیگری علامت را برعکس تعریف کند، باید همان تعریف را با دادهٔآزمون کنترل کنیم. اسمِ cross-correlation بهتنهایی جایِ گفتنِ ترتیب و فرمول را نمیگیرد. مثالِ حاضر دادهٔحقیقی دارد؛ قواعدِ conjugate برایِ دادهٔمختلط در مرجع آمدهاند اما این fixture آن حالت را اجرا نمیکند.
دو قلهٔبرابر را یک پاسخِ قطعی ننامیم
ضدنمونهٔبعدی referenceِ[۱،−۱] وsignalِ[۱،−۱،۰،۱،−۱] دارد. الگو دو بار حاضر است و همبستگی در lagهایِ ۰و۳ دو بیشینهٔبرابرِ ۲ میدهد. کد همهٔlagهایِ برابرِ بیشینه را برمیگرداند. انتخابِ فقط اولینِ argmax میتوانست یکی را نشان دهد،بدونِ اینکه ابهامِ واقعیِ داده رفع شده باشد.
تکرارِ الگو،دامنهٔجستوجو،مرزِ پنجره و تغییرِ سیگنال میتوانند تفسیرِ قله را عوض کنند. در اینجا نویز،نرخِ متغیر،drift،مقیاسِ دامنه یا normalization بررسی نشدهاند. از موفقیتِ جابهجاییِ معلوم،درستیِ تخمینِ تأخیرِ هر فایلِ واقعی نتیجه نمیگیریم.
واحدِ این آزمایش نمونه است،نه ثانیه
برایِ تبدیلِ lag به زمان،نرخِ نمونهبرداریِ واقعی و قراردادِ محورها لازم است؛ این صفحه نرخِ فایلِ واقعی ندارد. تابعِ محدود طولِ هرورودی را حداکثر۱۶ میخواهد و دادهٔخالی،ثابت،تماماًصفر وNaN را درچهار آزمون رد میکند. ردِ دادهٔثابت سیاستِ همین ابزارِ نمایشی است،نه ممنوعیتِ عمومیِ np.correlate.
همترازیِ اجباریِ متن واژهٔمعلوم را به صوت وصل میکند؛ cross-correlationِ عددیِ اینجا واژه تشخیص نمیدهد. ممیزیِ متن و صوتِ تماس هم شاهدِ گوینده،زمان و محتوا میخواهد؛ قلهٔیک سیگنالِ ساختگی جایِ شنیدنِ شاهد نیست.
برای ادامه در مبانی هوش مصنوعی،ترتیبِ دو ورودی،واحدِ lag،mode وتمامِ قلههایِ مساوی را کنارِ نتیجه ثبت کنید. همهٔمحاسبهها با Python۳٫۱۲٫۱۴ وNumPy۲٫۳٫۵ اجرا شدهاند؛ از این تمرین،وجودِ روشِ همزمانسازی یا کیفیتِ زمانبندیِ داخلی در اپرانگار یا دیگر محصولاتِ اپرا استنباط نمیشود.
فایل تمرین و منبع
کد مستقلِ تمرینِ محدود · تمام خروجیِ واقعیِ همین تمرین؛ JSON
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.