ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 10 از 10

موضوع: fft در matlab

  1. #1
    2012/03/12
    1
    0

    fft در matlab

    سلام.من یک دسته موج سینوسی با فرکانسهای مضرب اصلی دارم که می خوام از fft استفاده کرده و هارمونیک های موج را رسم کنم.
    لطفا مرا راهنمایی کنید.
  2. #2
    2009/10/21
    تهران
    2,517
    217

    پاسخ : fft در matlab

    مثال تابع fft رو تو هلپ متلب نگاه کن
  3. #3
    2010/09/07
    تهران
    316
    13

    پاسخ : 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))
    این هم یک مثال
    کد:
    fs = 500;
    t = 0:1/fs:1;
    x = 5*sin(2*pi*50*t) + 1*sin(2*pi*150*t);
    nfft = 2^( nextpow2(length(x)) );
    df = fs/nfft;
    f = 0:df:fs/2;
    X = fft(x,nfft);
    X = X(1:nfft/2+1);
    plot(f,abs(X))
  4. #4
    2010/01/16
    گیلان
    12
    1

    سوال !

    سلام

    از اونجايي که فرکانس نمونه برداري حد اقل بيشتر از دو برابر بزرگترين مولفه فرکانسي در سيگنال ورودي هستش واسه همين شما بازه فرکانس رو به صورت زير تعيين کردين :
    f = 0:df:fs/2
    اما اين قسمت اولي رو اصلا متوجه نميشم.
    df = fs/nfft;

    چرا بازه زماني در محور فرکانس برابر است با فرکانس نمونه برداري تقسيم بر nfft ؟
    Life is Song , Song it
  5. #5
    2010/09/07
    تهران
    316
    13

    پاسخ : fft در matlab

    سلام
    df رزولوشن فرکانسيه يعني فاصله فرکانسي ميان دو نقطه محاسبه شده fft
    fft به ما nfft نقطه ميده. نقطه اول مقدار متوسط سيگناله(که همون فرکانس صفر محسوب ميشه). از نقطه دوم تا نقطه nfft/2 + 1 ام نمايانگر محتويات فرکانسي سيگنال هستند. از نقطه nfft/2+2 به بعد، ديگر اطلاعات مفيدي وجود نداره. چون اين نقاط عملا کپي نقاط دسته اول هستند(به خاطر داريد که تبديل فوريه يک سيگنال حقيقي، نسبت به محور عمودي متقارن هست. يعني نيمي از آن تکراري و بي ارزشه)
    بنابراين در مجموع nfft/2+1 نقطه وجود داره که در بازه فرکانسي 0 تا fs/2 به شکل يکنواختي پخش شدن. خوب حالا سوالي که بايد پرسيد اينه که فاصله ميان اين نقاط چيه؟ مشخصه! fs/2 تقسيم بر nfft/2 يا همون fs/nfft که من با df نشون دادم
    و يک نتيجه که ميشه گرفت اينه که با افزايش nfft ميتوان df رو کاهش و رزولوشن فرکانسي رو افزايش داد.

    البته در نسخه ها جديد matlam دستور spectrum کار تهيه محور فرکانسي رو هم انجام ميده.
  6. #6
    2010/01/16
    گیلان
    12
    1

    پاسخ : fft در matlab

    ممنون از توضيحاتت منهدس
    Life is Song , Song it
  7. #7
    2017/11/26
    1
    0

    پاسخ : fft در matlab

    من هم خیلی از توضیحاتتون استفاده کردم
    متشکرم
  8. #8
    2010/12/04
    8
    0

    پاسخ : fft در matlab

    من هم استفاده کردم ممنون از همه
  9. #9
    2017/08/26
    1
    0

    پاسخ : fft در matlab

    سلام.
    من از این روشی که اینجا گفتید برای آنالیز فرکانسی فوریه استفاده کردم منتها مشکلی که وجود داره اینه که دامنه و فرکانس سیگنال موردنظرمو دقیق بهم نمیده. روشی وجود داره که بتونم این اطلاعات و دقیق تر بدست بیارم؟
  10. #10
    2012/10/15
    1
    0

    پاسخ : fft در matlab

    بسیار آموزنده عالی بود .
نمایش نتایج: از 1 به 10 از 10

موضوعات مشابه

  1. MATLAB
    توسط vahid_22002 در انجمن سیستم های کنترلی
    پاسخ: 4
    آخرين نوشته: 2015/03/30, 08:27
  2. MATLAB
    توسط reza433 در انجمن پردازش تصوير
    پاسخ: 2
    آخرين نوشته: 2014/02/19, 08:08
  3. کار با DSP در MATLAB
    توسط micromajid در انجمن Matlab
    پاسخ: 2
    آخرين نوشته: 2013/08/11, 07:59
  4. matlab
    توسط m.gharibe در انجمن برنامه نویسی و اینترفیس
    پاسخ: 0
    آخرين نوشته: 2013/01/12, 06:26
  5. MATLAB C/C++ Book for MATLAB Compiler 4
    توسط امیرعلی بلورچیان در انجمن کتاب های تخصصی
    پاسخ: 0
    آخرين نوشته: 2007/01/05, 23:09

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •