تعمل rfft2 على مصفوفة حقيقية. [1] لكن اختصار الطيف لا يعني قص كلا المحورين. نختبر مصفوفتين مؤلفتين تكشفان ما يضيع عند فعل ذلك.
اقرأ شكل الخرج قبل أن تقصه
تعتمد rfft2 على rfftn مع محوريها الافتراضيين. [1] وفي ترتيب المحاور المحدد، يُختصر المحور الأخير فقط؛ تتحول المحاور الأخرى بالطريقة المركبة المعتادة. [2]
نختار NumPy 2.3.5 ومدخلًا من نوع float64، ونكتب axes=(0,1) صراحة. طول المحور الأخير أربع، فيصبح طول خرجه 4//2+1=3، ويبقى طول المحور الأول أربعًا. الناتج إذن (4,3). [2]
مصفوفتنا A صفوفها [2,−1,3,0] ثم [4,1,−2,5] ثم [0,2,1,−3] ثم [3,0,4,−1]. هذه قيم مؤلفة، بلا وحدات قياس أو بيانات صورة مقتبسة.
أعطى fft2 الكامل شكل (4,4)، وأعطى rfft2 شكل (4,3)، وكلاهما complex128. طابقت قيم الخرج المختصر أول ثلاثة أعمدة من الكامل، مع بقاء الصف الرابع. لا نستنتج من اسم التحويل أن المحور الأول يقصر أيضًا.
تتبّع زوج الفهارس معًا
للتحويل ثنائي الأبعاد أس سالب يجمع مساهمات البعدين. [4] ومع قيم المدخل الحقيقية يرتبط معامل الطيف بمرافق المعامل عند سالب كلا الفهرسين. [4] نرمز إليه F[−k,−l]=conj(F[k,l])، مع الحساب الدوري.
عند طول أربع، سالب الفهرس 1 هو 3 دوريًا. لذلك شريك F[1,1] هو F[3,3]، وشريك F[3,1] هو F[1,3]. تبديل الصف وحده لا يعطي الشريك الصحيح هنا.
في A نجد F[1,1]=5−i، بينما F[3,1]=−5+13i؛ ليست الثانية مرافق الأولى. نجد بدلًا من ذلك F[3,3]=5+i وF[1,3]=−5−13i، فتتفق الأزواج المقرونة.
يحفظ الطيف (4,3) المعامل F[3,1]، ويترك F[1,3] خارج الأعمدة المحفوظة. يبقى أحد الشريكين متاحًا. أما الاقتصار على الفهارس من صفر إلى اثنين في البعدين فيستبعد الاثنين معًا.
ابنِ مدخلين لا يميّزهما القص المزدوج
نضيف إلى A مصفوفة Δ ذات الصفوف [1,0,−1,0]، [0,1,0,−1]، [−1,0,1,0]، [0,−1,0,1]. نحصل على B ذات الصفوف [3,−1,2,0]، [4,2,−2,4]، [−1,2,2,−3]، [3,−1,4,0].
حسابنا المستقل بجذور الأربع والتحويل المحفوظ يتفقان: لا يتغير الطيف الكامل إلا عند (1,3) و(3,1)، وبزيادة 8+0i في كل موضع. لا نحتاج بيانات مقتبسة لصناعة هذا الفرق.
في الخرج المختصر تتغير قيمة (3,1) من −5+13i إلى 3+13i، بينما تتساوى قيم أول ثلاثة صفوف كلها. القيم التسع في القطعة (3,3) واحدة للمدخلين المختلفين.
لذلك لا تكفي هذه القطعة للتمييز بين A وB في تجربتنا. حذف صف أخير إضافي ليس مجرد تقليل مساحة التخزين دون خسارة: لقد حذفنا المعامل الذي يميز المدخلين، بعدما كان شريكه خارج الأعمدة المختصرة أصلًا.
لم نمرر القطعة (3,3) إلى عكس ثم نفسر ما ينتجه. الدليل هنا مقارنة معلومات محفوظة: مدخلان مختلفان يقابلان القيم التسع نفسها، مع فرق ظاهر في الطيف الصحيح (4,3).

احفظ الشكل الأصلي وحدد ما اختبرناه
قرأنا تنفيذ الإصدار 2.3.5: يستدعي rfftn تحويل rfft على آخر محور، ثم fft على بقية المحاور. ويجري irfftn العكس المركب قبل irfft على الأخير. [3] هذا يوضح المسار دون أن نزعم فحص كل تفاصيل التنفيذ.
استدعينا irfft2 لكل طيف محفوظ، مع s=(4,4) وaxes=(0,1) وnorm="backward". أعاد مصفوفة float64 بشكل (4,4)، ووافقت عناصرها المدخل المؤلف نفسه. احتفظنا بالشكل الأصلي إلى جانب الطيف.
أضفنا مدخلًا صفريًا و64 تركيبًا من {−2,1} في ستة مواضع محددة، والباقي أصفار. مع A وB أصبح لدينا 67 مدخلًا مختلفًا، و67 استدعاءً لكل من fft2 وrfft2 وirfft2.
حفظنا 1876 عنصرًا مركبًا و1072 عنصر عكس حقيقي: 2948 عنصرًا من 201 استدعاء عام مسمى. فحصنا الأشكال والأنواع وثبات بايتات المدخل والطيف المختصر. وافقت النتائج مرجع جمع مستقل ضمن حد مطلق 10⁻¹².
تحققنا أيضًا من كل القيم المحفوظة بجمع كسري مستقل، وأعدنا الطيف الكامل من المختصر باقتران الفهرسين، ثم حسبنا العكس دون إعادة تشغيل NumPy. لا نزعم أن التحقق فحص أطوالًا أو ترتيب محاور أو أنواعًا أو تطبيعات أخرى، ولا أداءً أو قياسات فعلية.
| المدخل | شكل rfft2 | القيمة عند (3,1) |
|---|---|---|
| A | (4,3) | −5+13i |
| B | (4,3) | 3+13i |
للتوسع: ترتيب الفهارس في reshape.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
