تعريف تبديل فوريه

از ویکی جامع پردیس دانشگاهی دانشگاه قم
پرش به: ناوبری، جستجو

تعريف تبديل فوريه

  • برای سيگنال پيوسته تبديل فوريه به صورت زير تعريف می شود:
(6-1)
  • برای سيگنال گسسته تبديل فوريه به صورت زير تعريف می شود:
(7-1)

که تعداد عناصر(نقاط) سيگنال گسسته می باشد.

به رابطه (1-6) تبدیل فوريه پيوسته (CFT[۱]) و به (1-7) تبديل فوريه گسسته (DFT[۲]) گفته می شود.

در شکل زیر، همسازهای اول تا سوم در يک سری فوريه و مجموع آنها نشان داده شده است.


شکل 1-4. همساز اول تا سوم يک سيگنال و مجموع آنها (Karris, 2012)


چون بحث ما بيشتر در مورد سيگنال های گسسته است روی رابطه دوم متمرکز می شويم. رابطه فوق بيان می کند سيگنال نقطه ای به سیگنال نقطه ای دیگری به نام تبديل می شود. شايد از خود بپرسيد چه فايده ای دارد که يک سيگنال را به يک سيگنال ديگر تبديل کنيم. به زودی با فوايد آن آشنا خواهيد شد.

مثال 1-13. سيگنال گسسته به صورت زير تعريف شده است. مطلوبست محاسبه DFT اين سيگنال.








با توجه به رابطه خواهیم داشت:





نکته: حاصل تبديل فوريه در حالت کلی شامل اعداد مختلط است. با توجه به (1-7) خواهیم داشت:

(8-1)


در نتيجه قسمت های حقيقی[۳] و موهومی[۴] را می توان به صورت زير نوشت:


(9-1)



قضيه: اگر تبديل فوريه گسسته سيگنال باشد خواهيم داشت:


(10-1)


اين رابطه نشان می دهد که سيگنال از روی DFT اش يعنی قابل بازسازی[۵] می باشد.

نکته: رابطه (1-10)، معکوس DFT يا IDFT[۶] نامیده می شود.

مثال 1-14. معکوس مثال 1-13 را انجام دهيد. يعنی فرض کنيد تبديل فوريه گسسته به صورت زير مفروض باشد و از روی آن را به دست بياوريم.








همان گونه که ملاحظه می شود توانسته ايم به اوليه دست پيدا کنيم.

مثال 1-13 و مثال 1-14 نشان می دهند بهتر است محاسبه DFT يا IDFT با استفاده از نرم افزار انجام شود.

مثال 1-15. برنامه MATLAB زير تبديل فوريه سيگنال پيوسته را محاسبه می کند.


syms t;
x_t=sin(t^2);
y=fourier(x_t);


در این برنامه، از جعبه ابزار ریاضیات سمبلیک MATLAB استفاده شده است. تابع fourier تبديل فوريه سيگنال را محاسبه می کند. با تغيير x_t می توان تبديل فوريه سيگنال هاي ديگر را محاسبه کرد.

مثال 1-16. مطلوبست انجام مثال 1-13 با نوشتن يک برنامه MATLAB

روش اول


clc
x=[1 2 2 1];
N=length(x);
for m=1:N
    X(m)=0;
    for n=1:N
        X(m)=X(m)+x(n)*exp(-j*2*pi*(n-1)*(m-1)/N);
    end
end
fprintf('\nThe original signal:');
fprintf('\nx[n]=[');
fprintf('%.2f\t',x);
fprintf(']');
fprintf('\nThe DFT:');
fprintf('\nX[m]=[');
fprintf('%.2f+(%.2fj)\t',[real(X);imag(X)]);
fprintf(']\n');


توضيحات

clc: برای پاک کردن صفحه نمايش MATLAB به کار می رود.

length: تابعی که طول يک آرايه را حساب می کند.

fprintf: برای نمايش متن يا مقدار متغيرها به کار می رود. توضيحات بيشتر آن را در Help نرم افزار MATLAB بيابيد.

real: قسمت حقيقی عدد مختلط را برمی گرداند.

imag: قسمت موهومی عدد مختلط را برمی گرداند.


روش دوم

تابع FFT در MATLAB ، DFT سيگنال را محاسبه می کند. برنامه زير همان کار برنامه قبل را به صورت ساده تری انجام می دهد.


clear all
close all
clc
x=[1 2 2 1];
N=length(x);
X=fft(x);
fprintf('\nThe original signal:');
fprintf('\nx[n]=[');
fprintf('%.2f\t',x);
fprintf(']');
fprintf('\nThe DFT:');
fprintf('\nX[m]=[');
fprintf('%.2f+(%.2fj)\t',[real(X);imag(X)]);
fprintf(']\n');


نکته: در MATLAB اندیس آرایه ها از عدد یک شروع می شود.

مثال 1-17. مطلوبست انجام مثال 1-14 با نوشتن يک برنامه MATLAB

روش اول


clear all
close all
clc
X=[6 -1-j  0  -1+j];
N=length(X);
for n=1:N
    x(n)=0;
    for m=1:N
        x(n)=x(n)+(1/N)*X(m)*exp(j*2*pi*(m-1)*(n-1)/N);
end
end
fprintf('\nThe DFT:');
fprintf('\nX[m]=[');
fprintf('%.2f+(%.2fj)\t',[real(X);imag(X)]);
fprintf(']\n');
fprintf('\nThe original signal:');
fprintf('\nx[n]=[');
fprintf('%.2f\t',x);
fprintf(']');


روش دوم

در MATLAB تابع IFFT معکوس تابع فوريه را حساب می کند.


clear all
close all
clc
X=[6 -1-j  0  -1+j];
x=ifft(X);
fprintf('\nThe DFT:');
fprintf('\nX[m]=[');
fprintf('%.2f+(%.2fj)\t',[real(X);imag(X)]);
fprintf(']\n');
fprintf('\nThe original signal:');
fprintf('\nx[n]=[');
fprintf('%.2f\t',x);
fprintf(']');


نکته: برای محاسبه DFT الگوريتمی به نام الگوریتم پروانه[۷] وجود دارد که با سرعت زيادتری محاسبه را انجام می دهد. در MATLAB اين الگوريتم پياده سازی شده است. از اين رو نام تابع MATLAB به جای DFT، واژهFFT که مخفف عبارت "تبدیل فوریه سریع"[۸] می باشد، استفاده شده است. همين الگوريتم برای محاسبه IDFT هم استفاده می شود و در نتيجه نام تابع در MATLAB به جای IDFT، IFFT می باشد. برای آشنایی با این الگوریتم، به (Mitra, 2001) مراجعه نمایید.

نکته: هر عدد مختلط به صورت قابل تبدیل است که ، دامنه[۹] و ، فاز[۱۰] خوانده می شوند. در نتيجه می توان DFT را نيز به این شکل بیان نمود.

نکته: در خصوص سيگنال های طبيعی مانند صدا بيشتر با دامنه کار داريم. چون بيشتر اطلاعاتی که برای پردازش آنها نياز است در دامنه وجود دارد.

مثال 1-18. در مثال 1-13 دامنه و فاز به صورت زير می باشد.




نکته: در MATLAB تابع atan2 برای محاسبه فاز سيگنال به کار می رود و تابع abs دامنه را محاسبه می کند. برای آشنايی با اين دو تابع به مثال زیر توجه کنيد.

مثال 1-19. سیگنال به صورت زير مفروض است. مطلوبست نوشتن برنامه MATLAB که دامنه و فاز تبديل فوريه آن يعنی را محاسبه کند و سپس و دامنه و فاز را رسم کند.



clear all
close all
clc
x=[0.6557 0.0357 0.8491 0.9340 0.6787 0.7577 0.7431...
0.3922 0.6555 0.1712 0.7060 0.0318 0.2769 0.0462...
0.0971 0.8235 0.6948 0.3171 0.9502 0.0344];
X=fft(x);
X_amp=abs(X); %The amplitude of X
X_phase=atan2(imag(X),real(X)); %The phase of X
subplot(3,1,1);
stem(x);
title('The original signal x[n]');
subplot(3,1,2);
stem(X_amp);
title('The amplitude of its Fourier transfor X[m]');
subplot(3,1,3);
stem(X_phase);
title('The phase of its Fourier transfor X[m]');


توضيحات

تابع atan2 با گرفتن بخش موهومی و حقيقی فاز آن را محاسبه می کند. همان گونه که می دانيم فاز يک عدد موهومی از قانون زير به دست می آيد.


(11-1)


(البته برای نقطه فاز تعريف نمی شود).

تابع atan2 اين رابطه را پياده سازی می کند.


شکل 1-5. نمودار مربوط به نتيجه اجراي مثال 1-19

مثال 1-20. برنامه زير يک فايل صوتی به نام DO_6001_12000.wav را می خواند. همان گونه که گفته شد صدا در واقع يک سيگنال يک بعدی است و می توان آن را با نشان داد. اين مثال در واقع تکرار مثال 1-19 برای اين سيگنال صوتی می باشد.


clear all
close all
clc
x=wavread('DO_6001_12000.wav');
X=fft(x);
X_amp=abs(X);
X_phase=atan2(imag(X),real(X)); %The phase of X
subplot(3,1,1);
stem(x);
title('The original signal x[n]');
subplot(3,1,2);
stem(X_amp);
title('The amplitude of its Fourier transfor X[m]');
subplot(3,1,3);
stem(X_phase);
title('The phase of its Fourier transfor X[m]');


شکل 1-6 نتيجه اجرای اين مثال را نشان می دهد. به علت وجود تعداد زياد نمونه ها نمودارها پيوسنه به نظر می رسد.

نکته مهم: با دقت در شکل 1-5 مشاهده می کنيم مقادير دارای تقارن می باشند و مقادير نيز دارای تقارن اما به صورت معکوس می باشند (البته برای اولين نمونه يعنی ، نقطه متناظر متقارن وجود ندارد). می توان ثابت کرد در حالت کلی هم همين وضعيت برقرار است. با توجه به (1-9) خواهيم داشت:


(12-1)



از اين رابطه نتيجه می گيريم:


(13-1)


به عنوان مثال با فرض خواهيم داشت و .البته چون انديس آرايه ها در MATLAB از یک شروع می شود متناظر اين روابط در شکل بالا و خواهد شد.


شکل 1-6. نمودار مربوطه به نتيجه اجراي مثال 1-20


پاورقی

  1. Continuous Fourier transform (CFT)
  2. Discrete Fourier transform (DFT)
  3. Real part
  4. Imaginary part
  5. Restore
  6. Inverse DFT (IDFT)
  7. Butterfly algorithm
  8. Fast Fourier Transform (FFT)
  9. Amplitude
  10. Phase