FFT

FFT

متوسط

مقدمة

تحويل فورييه

يظهر تحويل فورييه كثيرًا في الفيزياء والرياضيات، وهذا يعني أن له استخدامات يومية كثيرة أيضًا.

باختصار، يأخذ تحويل فورييه إشارةً مدخلة، غالبًا في النطاق الزمني أو المكاني، ويحوّلها إلى النطاق الترددي. وبشكل أكثر تحديدًا، عندما تتكوّن الإشارة المدخلة من خليط (أي تراكب) من ترددات مختلفة، يفصل التحويل الترددات الفردية ويُظهر قوتها النسبية.

هذا يجعل التحويل أداة أساسية في معالجة الإشارات (مثل الترشيح والضغط وغير ذلك) وفي كثير من تطبيقات علم البيانات. لذلك، ربما يكون استخدامه أوسع مما قد يتخيله المرء للوهلة الأولى، وهذا يجعله أيضًا مثالًا بارزًا على المواضع التي تصبح فيها الأعداد التخيّلية لا غنى عنها، بالنظر إلى أن ناتج تحويل فورييه عدد مركّب بشكل عام.

وبينما لتحويل فورييه صيغة تكاملية، فإننا رقميون، لذا يهمّنا الإصدار المتقطّع. اشتقاق التحويل خارج نطاق هذا التمرين، لكن التحويل المتقطّع الأمامي (إلى النطاق الترددي) يأخذ الصيغة التالية: Xₖ = Σ xₙ * ℯ^(-2iπk * n/N) هنا يمتدّ الجمع على n، وN هو عدد العينات، وk هو التردد، وi هي الوحدة التخيّلية، وxₙ عيّنة واحدة.

تحويل فورييه السريع

رغم فائدة تحويل فورييه البالغة، فإنه إذا نُفّذ تنفيذًا ساذجًا يكون بطيئًا بعض الشيء (O(n²)). وتحويل فورييه السريع (FFT) خوارزمية تُسرّع هذا بدرجة كبيرة. ويُنجَز هذا عادةً من خلال استراتيجية فرِّق تسُد، التي تستغل بعض التناظرات في الصيغة وتؤدي إلى تعقيد O(Nlog(N)) مقارب. هذا التسريع يحسّن كثيرًا الجدوى العملية للتحويل ونطاق التطبيقات المناسبة له.

التعليمات

صديقك مهندس صوت، وقد طلب منك مساعدته في كتابة تحويل فورييه لبرمجية خاصة يعمل على تطويرها. ولأنك تريد إتقان هذا الأمر، ستبدأ أولًا بتنفيذ تحويل فورييه المتقطع (DFT) بصورته البدائية الكاملة. ويمكن بعد ذلك استخدامه للتحقق من صحة هدفك النهائي، وهو تحويل فورييه السريع (FFT).

1. DFT

نفّذ DFT.

لاحظ أن تعقيده O(n²)، لأنك تحصل على k واحد مقابل المرور عبر جميع النقاط n، وستحتاج إلى متجه Xₖ بالطول نفسه الذي لمتجه الإشارة Xₙ (لتحقيق قابلية العكس)، لذا فإن المرور n مرة عبر n نقطة يعطي O(n²).

2. FFT

نفّذ FFT.

Note

توجد موارد كثيرة يمكنك أن تجد فيها تفاصيل أوفى عن خصوصيات هذه الخوارزمية، فلا تتردد في إجراء بعض البحث.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Julia Exercism

مستعد لبدء FFT؟

سجّل في Exercism لتتعلّم وتتقن Julia عبر 35 مفهومًا128 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.