اطلاعیه

Collapse
No announcement yet.

تبدیل فوریه fft از سیگنال eeg

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تبدیل فوریه fft از سیگنال eeg

    با سلام:
    من یه سیگنال eeg دارم که کد هگزش رو توسط یه نرم افزار گرفتم و در قالب دیتا بصورت زیر ذخیره کردم میخوام تو محیط متلب ازش فوریه بگیرم:!خواهشا راهنمایی کنین؟؟؟؟؟؟؟؟؟؟؟
    Time,1,2
    0.000000,4.000000,-8.000000
    0.006250,-27.000000,-49.000000
    0.012500,-71.000000,-61.000000
    0.018750,-53.000000,-60.000000
    0.025000,-50.000000,-76.000000
    0.031250,-44.000000,-55.000000
    0.037500,-49.000000,-62.000000
    0.043750,-46.000000,-46.000000
    0.050000,21.000000,6.000000
    0.056250,15.000000,-10.000000
    0.062500,-11.000000,-38.000000
    0.068750,16.000000,-12.000000
    0.075000,3.000000,-10.000000
    0.081250,1.000000,-7.000000
    0.087500,-24.000000,-17.000000
    0.093750,-22.000000,-24.000000
    0.100000,16.000000,3.000000

    #2
    پاسخ : تبدیل فوریه fft از سیگنال eeg

    خوشحال شدم دیدم بلخره یکی از این روابط ریاضی تو عمل داره استفاده میکنه
    میشه یک در مورد کارت بگی که فوریه چطور به کارت اومده؟! (یعنی فوریشو میخوای چیکار؟)
    با متب که نمیشه فوریه گرفت
    یعنی باید یک سری تابع بنویسی واسه فوریه بعد اونمونه هاتو به تابع با دوره متناوب مشخص تبدیل کنی بعد از تابع فوریه بگیری
    http://mathworks.ir/media/kunena/attachments/4101/readme.pdf

    آنان که خاک را به نـــــظر کیمیا کنند
    آیا بود که گوشه چشمی به ما کنند

    دیدگاه


      #3
      پاسخ : تبدیل فوریه fft از سیگنال eeg

      با تشکر مهندس جان...اگه امکان داره بیشتر راهنمایی کنین...
      پروژه من به این صورت است که ابتدا سیگنال های مغزی (EEG) که تصور حرکت دست و چپ و راست است که سیگنال از مغز هنگام تصور حرکت ثبت شده است که از جنس ولتاژ با دامنه چندین میکروولت که تقویت و در حوزه زمان مرتب سازی شده اند ابتدا از پایگاه داده دانلود شده و سپس در نرم افزار دیگری به کد هگز یا دیتا تبدیل شده است که در زیر درج شده است که ستون اول از سمت راست مربوط به زمان و ستون دوم وسوم مربوط به مختصات نقاط دو بعدی سیگنال است::::
      0.000000,4.000000,-8.000000
      0.006250,-27.000000,-49.000000
      0.012500,-71.000000,-61.000000
      0.018750,-53.000000,-60.000000
      0.025000,-50.000000,-76.000000
      0.031250,-44.000000,-55.000000
      0.037500,-49.000000,-62.000000
      0.043750,-46.000000,-46.000000
      0.050000,21.000000,6.000000
      و سپس با استفاده از ویژگی چگالی طیفی توان سیگنال در نرم افزار Matlab که به نطرم همان تبدیلت فوریه است استخراج ویژگی شده که در اینجا حوزه فرکانس مد نطر هست و بعد در نرم افزار Matlab با استفاده از ماشین بردار پشتیبان (SVM) طبقه یندی شده و سپس به یک ربات متحرک منتقل می شود.

      دیدگاه


        #4
        پاسخ : تبدیل فوریه fft از سیگنال eeg

        مهندس جان در جایی خونده بودم که با استفاده از دستور FFT و یک سری دستورات که در زیر آمده است در Matlab می توان این کار رو انجام داد ولی جواب نداد:::
        استفاده از دستور fft چند نکته داره. فرض میکنیم که سیگنال مورد نظر x و فرکانس نمونه برداری برابر fs باشد.
        مرحله اول: تعیین تعداد نقاط fft است که ما با nfft نشان میدهیم. برای دست یافتن به سرعت بالای محاسبات توصیه میکنند که nfft را به شکل توانی از 2 در نظر بگیریم(مثلا 1024 یا 2048 یا ...) از طرف دیگر nfft باید از تعداد نقاط تشکیل دهنده سیگنال بزرگتر باشد. برای آنکه به چنین nfft برسیم کافی است از دستور زیر استفاده کنیم:

        nfft = 2^( nextpow2(length(x)) );مرحله دوم: تعیین محور فرکانس: دستور fft تنها یکسری اعداد مختلط به شما میدهد و هیچ اطلاعاتی در باره اینکه این اعداد به کدام فرکانس مربوط هستند نمیدهد. بنابراین برای رسم fft باید محور فرکانس را خودتان بسازید. برای اینکار از دستورات زیر استفاده کنید:

        df = fs/nfft;
        f = 0:df:fs/2;مرحله سوم: محاسبه fft سیگنال که با دستور زیر انجام میشود:

        X = fft(x,nfft);مرحله چهارم: اکنون fft سیگنال که با X نشان داده شده است را دارید. اما خاصیت تبدیل فوریه این است که نسبت به محور عمودی متقارن است یعنی نیمی از اعدادی که fft به شما میدهد تکراری است که رسم آنها بیهوده است بنابراین با دستور زیر مقادیر تکراری را حذف کنید:

        X = X(1:nfft/2+1);مرحله پنجم و آخر: حالا میتوانید اندازه یا فاز fft را رسم کنید. بر فرض که بخواهید اندازه را رسم کنید از دستور زیر استفاده خواهید کرد:

        plot(f,abs(X))
        .....

        دیدگاه


          #5
          پاسخ : تبدیل فوریه fft از سیگنال eeg

          نوشته اصلی توسط jmax
          مهندس جان در جایی خونده بودم که با استفاده از دستور FFT و یک سری دستورات که در زیر آمده است در Matlab می توان این کار رو انجام داد ولی جواب نداد:::
          استفاده از دستور fft چند نکته داره. فرض میکنیم که سیگنال مورد نظر x و فرکانس نمونه برداری برابر fs باشد.
          مرحله اول: تعیین تعداد نقاط fft است که ما با nfft نشان میدهیم. برای دست یافتن به سرعت بالای محاسبات توصیه میکنند که nfft را به شکل توانی از 2 در نظر بگیریم(مثلا 1024 یا 2048 یا ...) از طرف دیگر nfft باید از تعداد نقاط تشکیل دهنده سیگنال بزرگتر باشد. برای آنکه به چنین nfft برسیم کافی است از دستور زیر استفاده کنیم:

          nfft = 2^( nextpow2(length(x)) );مرحله دوم: تعیین محور فرکانس: دستور fft تنها یکسری اعداد مختلط به شما میدهد و هیچ اطلاعاتی در باره اینکه این اعداد به کدام فرکانس مربوط هستند نمیدهد. بنابراین برای رسم fft باید محور فرکانس را خودتان بسازید. برای اینکار از دستورات زیر استفاده کنید:

          df = fs/nfft;
          f = 0:df:fs/2;مرحله سوم: محاسبه fft سیگنال که با دستور زیر انجام میشود:

          X = fft(x,nfft);مرحله چهارم: اکنون fft سیگنال که با X نشان داده شده است را دارید. اما خاصیت تبدیل فوریه این است که نسبت به محور عمودی متقارن است یعنی نیمی از اعدادی که fft به شما میدهد تکراری است که رسم آنها بیهوده است بنابراین با دستور زیر مقادیر تکراری را حذف کنید:

          X = X(1:nfft/2+1);مرحله پنجم و آخر: حالا میتوانید اندازه یا فاز fft را رسم کنید. بر فرض که بخواهید اندازه را رسم کنید از دستور زیر استفاده خواهید کرد:

          plot(f,abs(X))
          .....
          خب بفرمایید مشکل fft چیه؟
          انجمن پرسش و پاسخ مهندسی پزشکی
          http://biomedeng.ir/forum_per/
          +++++++++++++++++++++++++++++++++
          سایت مهندسی پزشکی
          http://biomedeng.ir/

          دیدگاه


            #6
            پاسخ : تبدیل فوریه fft از سیگنال eeg

            سلام.
            آقای jmax منم یه پروژه با eeg دارم.
            می تونم بپرسم سیگنالهای eeg رو چطور آشکار کردید؟
            یعنی اینکه از چه ماژولی براگرفتن سیگنال مغز استفاده کردید.ماژولش چند سنسوره بود؟
            چطوری انتقال دادید؟با سیم یا بیسیم؟
            پردازشگرتون برا دریافت چی بود؟
            مدار یا شماتیک می تونید ازش بذارید؟
            نرم افزار هایی که استفاده کردید چی بود؟
            آیا آردینو استفاده کردید؟

            دیدگاه


              #7
              پاسخ : تبدیل فوریه fft از سیگنال eeg

              با سلام

              برای بررسی طیف ابزارهای زیادی توی متلب هست
              تابع چگالی طیف توان تابع نسبتا خوبی است
              شما می توانید مستقیما از تابع fft هم استفاده کنید

              کد:
              U = [0.000000,4.000000,-8.000000
              0.006250,-27.000000,-49.000000
              0.012500,-71.000000,-61.000000
              0.018750,-53.000000,-60.000000
              0.025000,-50.000000,-76.000000
              0.031250,-44.000000,-55.000000
              0.037500,-49.000000,-62.000000
              0.043750,-46.000000,-46.000000
              0.050000,21.000000,6.000000
              0.056250,15.000000,-10.000000
              0.062500,-11.000000,-38.000000
              0.068750,16.000000,-12.000000
              0.075000,3.000000,-10.000000
              0.081250,1.000000,-7.000000
              0.087500,-24.000000,-17.000000
              0.093750,-22.000000,-24.000000
              0.100000,16.000000,3.000000];
              
              clc
              x = U(:,3);
              Fs = 1;
              
              nfft = 2^nextpow2(length(x));
              Pxx = abs(fft(x,nfft)).^2/length(x)/Fs;
              
              % Create a single-sided spectrum
              Hpsd = dspdata.psd(Pxx(1:length(Pxx)/2),'Fs',Fs); 
              plot(Hpsd);

              در اینجا شما Fs رو از یک به فرکانس نمونه برداری خودتون تغییر بدید
              با مشاهده سیگنال بنظر
              فرکانس نمونه برداریتان کم است
              و همینطور تعداد نمونه هاتان پایین است
              برای تحلیل بهتر این دو مورد را بهبود دهید

              در ضمن کد هگز را هم می توانید مستقیما با متلب بخوانید و تبدیل کنید

              موفق باشید





              http://www.4shared.com/office/wspNnTsI/AMUZESH_JAMEE_MATLAB.html

              دیدگاه

              لطفا صبر کنید...
              X