اطلاعیه

Collapse
No announcement yet.

تجزیه و بازسازی سیگنال با استفاده از موجک ها

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

    تجزیه و بازسازی سیگنال با استفاده از موجک ها

    سلام به همه دوستان

    من دارم روی پروژه ایی کار میکنم که هدفش تجزیه و بازسازی سگنال توسط موجک هاست. همون طور که میدونید نرمافزار متلب کتابخونه خیلی جامعی در این زمینه داره ولی متاسفانه من نمیتونم از این کتابخونه استفاده کنم. دلیلش هم این هست که کل پروژه من الگوریتم بازسازی هست و تمام نوآوری! که شده همین الگوریتم هست. فعلا قصدم روی توابع یک بعدی هست و بعدا این روش باید به توابع دوبعدی بسط پیدا کنه. با یک مثال ساده شروع میکنم. طبق تعریفی که توی wikipedia از تبدیل wavelet بیان شده, میتونیم این ضرایب رو به صورت زیر بدست بیاریم:


    که در اون ضرایب a و b به صورت زیر به دست میان:


    حالا من طبق این دو تا فرمول اومدم یک کد متلب نوشتم که تنها تفاوتش با این تبدیل انتگرال ها به سیکماست. از اونجا که نمونه گیری ها از سیگنال توسط شیفت دادن موجک بدست میاد پارامتر N بیان گر این هست که چند بار این شیفت ها انجام بشه. کد زیر کدی هست که من نوشتم:
    [code=matlab]
    %================================================= =========================
    % Generating input Signal:
    %================================================= =========================
    f_x = -10*pi:0.1:10*pi;
    f = cos(f_x);
    len = size(f);
    %================================================= =========================
    % Creating Cooeficients:
    %================================================= =========================
    jcounter = 1;
    tic;
    temp = 0;
    for k=-N:N
    for j=-N:N
    for i=1:len(1,2)
    a = 2^(j);
    x = (f_x(i) * a) - k;
    mex = mexician(x);
    temp = temp + mex*f(i);
    end
    coef(jcounter) = temp;
    jcounter = jcounter +1;
    temp = 0;
    end
    end
    [/code]

    و حالا برای بازسازی هم از کد زیر استفاده میکنم:

    [code=matlab]
    jcounter = 1;
    temp = 0;
    for i=1:len(1,2)
    for k=-N:N
    for j=-N:N
    a = 2^(j);
    x = (f_x(i) * a) - k;
    mex = mexician(x);
    temp = temp + mex*coef(jcounter);
    jcounter = jcounter +1;
    end
    end
    jcounter = 1;
    out(i) = (temp);
    temp = 0;
    end
    [/code]

    الان با استفاده از این کد ها میتونم یک موج سینوسی ساده رو تجزیه و بازسازی کنم ولی متاسفانه اگر فرکانس موج ورودی افزایش پیدا کنه همه چی به هم میریزه. یعنی فقط میشه گفت برای یک موج ساده سینوسی کار مکنه :angry: :angry: :angry:
    حالا میخواستم بدونم کسی تاحالا خودش همچین کدهایی نوشته؟؟ درضمن من دقیقا میتون هر سیگنال یا تصویری رو با توابع متلب تجزیه و بازسازی کنم ولی همونطور که گفتم اصلا به دردکار من نمیخوره.

    #2
    پاسخ : تجزیه و بازسازی سیگنال با استفاده از موجک ها

    با سلام


    تابع شما توانایی تجزیه سیگنال با فرکانس بیشتر از دوصدم هرتز رو نداره
    برای اینکه بتونید این کار رو انجام بدید فرکانس نمونه برداری f_x = -10*pi:0.1:10*pi; رو افزایش بدین

    برای تجزیه طیفی تبدیل فوریه بهتره
    http://www.4shared.com/office/wspNnTsI/AMUZESH_JAMEE_MATLAB.html

    دیدگاه

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