لماذا يكون لنتائج الالتفاف أطوال مختلفة عند تنفيذها في المجال الزمني مقابل مجال التردد؟

StackOverflow https://stackoverflow.com/questions/3847312

  •  27-09-2019
  •  | 
  •  

سؤال

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

على سبيل المثال، إذا كان طول كل من المرشح وأشكال الموجة هو N نقطة، فإن النهج الأول (أي.الالتفاف) ينتج نتيجة بطول نقاط N+N-1، حيث النصف الأول من هذه الاستجابة هو ملء الفلتر والنصف الثاني هو إفراغ الفلتر.للحصول على استجابة حالة مستقرة، يحتاج المرشح إلى نقاط أقل من الشكل الموجي المراد تصفيته.

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

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

أي فكرة سيكون موضع تقدير كبير

هل كانت مفيدة؟

المحلول

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

العودة إلى فقرتك الأولى:عادة، في DSP، أكبر مشكلة أواجهها مع تحويلات FFT هي أنها غير سببية، ولهذا السبب أفضل غالبًا البقاء في المجال الزمني، باستخدام، على سبيل المثال، مرشحات FIR وIIR.

تحديث:

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

خذ بعين الاعتبار، على سبيل المثال، مرشحًا يطبق متوسطًا بسيطًا يزيد عن 128 نقطة عينة، باستخدام تطبيقين مختلفين.

تحويل فوري مباشر:في نهج FFT/الالتفاف، يمكن للمرء الحصول على عينة من 256 نقطة، على سبيل المثال، ودمجها مع wfm الذي يكون ثابتًا في النصف الأول ويصل إلى الصفر في النصف الثاني.والسؤال هنا (حتى بعد أن قام هذا النظام بتشغيل عدة دورات)، ما الذي يحدد قيمة النقطة الأولى من النتيجة؟يفترض FFT أن wfm دائري (أي.دورية بلا حدود) لذلك إما:يتم تحديد النقطة الأولى من النتيجة بواسطة آخر 127 (أي.المستقبل) عينات من wfm (التخطي فوق منتصف wfm)، أو بمقدار 127 صفرًا إذا قمت بوضع لوحة الصفر.لا هذا ولا ذاك صحيح.

منطقة معلومات الطيران:هناك طريقة أخرى تتمثل في تنفيذ المتوسط ​​باستخدام مرشح FIR.على سبيل المثال، هنا يمكن استخدام متوسط ​​القيم في قائمة انتظار 128 تسجيل FIFO.أي أنه عند وصول كل نقطة عينة، 1) ضعها في قائمة الانتظار، 2) قم بإدراج العنصر الأقدم في قائمة الانتظار، 3) متوسط ​​جميع العناصر الـ 128 المتبقية في قائمة الانتظار؛وهذه هي النتيجة الخاصة بنقطة العينة هذه.يعمل هذا الأسلوب بشكل مستمر، ويتعامل مع نقطة واحدة في كل مرة، ويعيد النتيجة التي تمت تصفيتها بعد كل عينة، ولا يحتوي على أي من المشكلات التي تحدث من تحويل فورييه السريع (FFT) عند تطبيقه على مجموعات العينات المحدودة.كل نتيجة هي مجرد متوسط ​​العينة الحالية والـ 127 عينة التي سبقتها.

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

نصائح أخرى

فيما يلي مثال على الالتواء دون حشوة صفرية للالتواء الخطي DFT (الالتفاف الدائري) مقابل الالتفاف الخطي. هذا هو إتلاف طول M = 32 مع تسلسل L = 128 (باستخدام Numpy/Matplotlib):

f = rand(32); g = rand(128)
h1 = convolve(f, g)
h2 = real(ifft(fft(f, 128)*fft(g)))
plot(h1); plot(h2,'r')
grid()

alt textتختلف نقاط M-1 الأولى ، وهي قصيرة بمقدار M-1 لأنه لم يكن صفرًا مبطنًا. هذه الاختلافات هي مشكلة إذا كنت تقوم بالالتفاف الحظر ، ولكن يتم استخدام تقنيات مثل التداخل وحفظ أو التداخل والإضافة للتغلب على هذه المشكلة. وإلا إذا كنت تقوم فقط بحساب عملية تصفية لمرة واحدة ، فستبدأ النتيجة الصحيحة في الفهرس M-1 وتنتهي في الفهرس L-1 ، بطول L-M+1.

فيما يتعلق بالورقة المذكورة ، نظرت إلى رمز MATLAB الخاص بهم في التذييل أ. أعتقد أنهم ارتكبوا خطأ في تطبيق وظيفة نقل HFinal على الترددات السلبية دون ارتباطها أولاً. خلاف ذلك ، يمكنك أن ترى في الرسوم البيانية الخاصة بهم أن ارتعاش الساعة هو إشارة دورية ، لذا فإن استخدام الالتواء الدائري أمر جيد لتحليل الحالة المستقرة.

تحرير: فيما يتعلق بالتزامن وظيفة النقل ، فإن PLLs لها استجابة دافع ذات قيمة حقيقية ، وكل إشارة ذات قيمة حقيقية لها طيف متماثل متزامن. في الكود ، يمكنك أن ترى أنهم يستخدمون فقط Hfinal [Ni] للحصول على الترددات السلبية دون أخذ المترافق. لقد رسمت وظيفة النقل الخاصة بهم من -50 ميغاهيرتز إلى 50 ميغاهيرتز:

N = 150000                    # number of samples. Need >50k to get a good spectrum. 
res = 100e6/N                 # resolution of single freq point  
f = res * arange(-N/2, N/2)   # set the frequency sweep [-50MHz,50MHz), N points
s = 2j*pi*f                   # set the xfer function to complex radians 

f1 = 22e6       # define 3dB corner frequency for H1 
zeta1 = 0.54    # define peaking for H1 
f2 = 7e6        # define 3dB corner frequency for H2 
zeta2 = 0.54    # define peaking for H2    
f3 = 1.0e6      # define 3dB corner frequency for H3 

# w1 = natural frequency   
w1 = 2*pi*f1/((1 + 2*zeta1**2 + ((1 + 2*zeta1**2)**2 + 1)**0.5)**0.5)  
# H1 transfer function 
H1 = ((2*zeta1*w1*s + w1**2)/(s**2 + 2*zeta1*w1*s + w1**2))            

# w2 = natural frequency 
w2 = 2*pi*f2/((1 + 2*zeta2**2 + ((1 + 2*zeta2**2)**2 + 1)**0.5)**0.5)  
# H2 transfer function  
H2 = ((2*zeta2*w2*s + w2**2)/(s**2 + 2*zeta2*w2*s + w2**2))            

w3 = 2*pi*f3        # w3 = 3dB point for a single pole high pass function. 
H3 = s/(s+w3)       # the H3 xfer function is a high pass

Ht = 2*(H1-H2)*H3   # Final transfer based on the difference functions

subplot(311); plot(f, abs(Ht)); ylabel("abs")
subplot(312); plot(f, real(Ht)); ylabel("real")
subplot(313); plot(f, imag(Ht)); ylabel("imag")

alt text

كما ترون ، فإن المكون الحقيقي له تناسق ومكون وهمي له تناسق فردي. في رمزهم قاموا بحساب الترددات الإيجابية فقط لمؤامرة loglog (معقول بما فيه الكفاية). ومع ذلك ، لحساب التحويل العكسي ، استخدموا القيم للترددات الإيجابية للترددات السلبية عن طريق فهرسة HFinal [Ni] ولكن نسيت أن تترافقها.

على الرغم من أنه سيكون هناك قطع أثرية من افتراض أن نافذة مستطيلة للبيانات تكون دورية في عرض فتحة FFT ، وهو أحد التفسيرات التي يقوم بها الالتفاف الدائري دون حشوة صفرية كافية ، قد تكون الاختلافات كبيرة أو لا تكون كبيرة بما يكفي لإثبات تحليل البيانات في سؤال.

يمكنني إلقاء بعض الضوء على سبب تطبيق "windowing" قبل تطبيق FFT.

كما أشرنا سابقًا، يفترض FFT أن لدينا إشارة لا نهائية.عندما نأخذ عينة خلال فترة زمنية محددة T، فهذا يعادل رياضيًا ضرب الإشارة في دالة مستطيلة.

الضرب في المجال الزمني يصبح تلافيفيًا في مجال التردد.استجابة التردد للمستطيل هي وظيفة المزامنة أي.الخطيئة(س)/س.x في البسط هو الركلة، لأنه يموت أسفل O(1/N).

إذا كان لديك مكونات تردد هي بالضبط مضاعفات 1/T، فهذا لا يهم لأن وظيفة المزامنة تكون صفرًا في جميع النقاط باستثناء ذلك التردد حيث يكون 1.

ومع ذلك، إذا كان لديك جيب يقع بين نقطتين، فسترى وظيفة المزامنة تم أخذ عينات منها على نقطة التردد.إنها تشبه نسخة مكبرة من وظيفة المزامنة وتتلاشى إشارات "الشبح" الناتجة عن الالتواء بمقدار 1/N أو 6dB/octave.إذا كانت لديك إشارة أعلى من مستوى الضوضاء بمقدار 60 ديسيبل، فلن ترى الضوضاء لـ 1000 تردد يمينًا ويسارًا من إشارتك الرئيسية، وسيتم إغراقها بواسطة "حواف" وظيفة المزامنة.

إذا كنت تستخدم نافذة زمنية مختلفة، فستحصل على استجابة ترددية مختلفة، جيب التمام على سبيل المثال يموت بـ 1/x^2، وهناك نوافذ متخصصة لقياسات مختلفة.غالبًا ما تستخدم نافذة Hanning كنافذة للأغراض العامة.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top