سلام به همه دوستان
من دارم روی پروژه ایی کار میکنم که هدفش تجزیه و بازسازی سگنال توسط موجک هاست. همون طور که میدونید نرمافزار متلب کتابخونه خیلی جامعی در این زمینه داره ولی متاسفانه من نمیتونم از این کتابخونه استفاده کنم. دلیلش هم این هست که کل پروژه من الگوریتم بازسازی هست و تمام نوآوری! که شده همین الگوریتم هست. فعلا قصدم روی توابع یک بعدی هست و بعدا این روش باید به توابع دوبعدی بسط پیدا کنه. با یک مثال ساده شروع میکنم. طبق تعریفی که توی 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:
حالا میخواستم بدونم کسی تاحالا خودش همچین کدهایی نوشته؟؟ درضمن من دقیقا میتون هر سیگنال یا تصویری رو با توابع متلب تجزیه و بازسازی کنم ولی همونطور که گفتم اصلا به دردکار من نمیخوره.
من دارم روی پروژه ایی کار میکنم که هدفش تجزیه و بازسازی سگنال توسط موجک هاست. همون طور که میدونید نرمافزار متلب کتابخونه خیلی جامعی در این زمینه داره ولی متاسفانه من نمیتونم از این کتابخونه استفاده کنم. دلیلش هم این هست که کل پروژه من الگوریتم بازسازی هست و تمام نوآوری! که شده همین الگوریتم هست. فعلا قصدم روی توابع یک بعدی هست و بعدا این روش باید به توابع دوبعدی بسط پیدا کنه. با یک مثال ساده شروع میکنم. طبق تعریفی که توی 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:
حالا میخواستم بدونم کسی تاحالا خودش همچین کدهایی نوشته؟؟ درضمن من دقیقا میتون هر سیگنال یا تصویری رو با توابع متلب تجزیه و بازسازی کنم ولی همونطور که گفتم اصلا به دردکار من نمیخوره.
دیدگاه