پایان نامه رایگان درباره محدودیت ها

دانلود پایان نامه ارشد

جمع شده و جواب نهایی در یک علامت منفی ضرب ﻣﯽشود. این ویژگی هم بر روی بردار شتاب و هم بر روی سیگنال GSR اعمال گردید.
public double Entropy(double[] inArray) {
double sum = 0.0; double temp = 0.0;
double entropy = 0.0;double ep = 0.0000001;
if (inArray != null) {
for (int i = 0; i < inArray.length; i++) {
temp = Math.pow(inArray[i], 2);
sum += temp * Math.sqrt(ep + temp);
}
entropy = -sum;
}
return entropy;
}

نحوه عملکرد تابع تبدیل ویولت بدین شکل تعریف ﻣﯽشود. با در نظر گرفتن یک سیگنال یک بعدی مانند شتاب در یکی از محورها و یا سیگنال GSR در یک بازه یا پنجره ای با طول مشخص، دادﻩهایی که در همسایگی هم هستند دو به دو با هم جمع و بر دو تقسیم ﻣﯽشوند و حاصل در یک آرایه دوم ذخیره ﻣﯽشود. مقدار تفاوت این دو داده نیز محاسبه و بر دو تقسیم ﻣﯽشود و در همان آرایه دوم ذخیره ﻣﯽشود. این روند تا پایان آرایه اولیه ادامه مي‏یابد. در گام دوم همین روند تکرار ﻣﯽشود، ولی تعداد محاسبات نصف ﻣﯽشود، چرا که این بار الگوریتم فقط بر روی یک دوم اول آرایه دوم اجرا ﻣﯽشود یعنی مقادیری که از حاصل جمع دو داده همسایه بدست آمده اند.
6
2
10
6
5
3
7
9

-2
-2
-1
1
4
8
4
8

-2
-2
-1
1
2
2
6
6

-2
-2
-1
1
2
2
0
6

عملکرد یک تابع تبدیل ویولت با مثال بالا کاملاً به وضوح دیده ﻣﯽشود. در مثال بالا آرایه دارای طول 8 است و تا سه سطح تبدیل ویولت اعمال شده است. این تعداد سطح برای این طول آرایه حداکثر مقدار است، ولی عموماً اگر آرایه با طول بزرگتر هم داشته باشیم بیشتر از سه سطح تبدیل ویولت اعمال ﻧﻤﻰشود. و اما پیاده سازی الگوریتم تبدیل ویولت به صورت ریاضی با کمک فیلترهای بالا گذر و پایین گذر حاصل ﻣﯽشود. این دو فیلتر در تبدیل ویولت معکوس هم استفاده ﻣﯽشوند و با هم تشکیل فیلترهای آینه ای متعامد، که معمولاً به صورت یک آرایه پیاده ﻣﯽشود، را می دهند. در مثال بالا و در انتهای عملیات تبدیل ویولت عدد اول به عنوان تقریبی از کل سیگنال و 7 عدد دیگر به عنوان بخش جزئیات این تبدیل می باشند که برای عملیات دادﻩکاوی بخش جزئیات در نظر گرفته ﻣﻰشود.
در کد آندروید زیر ابتدا سیگنال اصلی در یک آرایه موقت ذخیره ﻣﯽشود. در گام بعدی با توجه به مقدار متغییر L که تعداد سطوح تبدیل ویولت را نشان مـﯽدهد، تعداد تکرار الگوریتم در متغییر iterations مشخص ﻣﯽشود. در مرحله بعدی ابتدا فیلتر پایین گذر از روی مقادیر پیش فرض ساخته شده و در ادامه فیلتر بالا گذر از روی فیلتر پایین گذر بدست ﻣﯽآید. سپس با کمک این دو فیلتر، آرایه فیلتر آینه ای متعامد حاصل ﻣﯽشود که در الگوریتم با متغییر QMF مشخص شده است. در مرحله آخر فیلتر آینه ای متعامد در سیگنال اصلی ضرب شده و حاصل آن تبدیل ویولت سیگنال خواهد بود.
public static double[] forwardDwt(double[] signal, int L) throws Exception {
int n = signal.length;
double[] dWT = MatrixOps.deepCopy(signal);
int log2n = (int) (Math.log(n) / Math.log(2));
int iterations = log2n – L;
int subLength = n;
double[] H = OrthogonalFilters.getLowPass();
double[] G = OrthogonalFilters.getHighPass(H);
for (int i = 0; i < iterations; i++) {
subLength = n / (int) (Math.pow(2, i));
double[][] QMF = makeQMFMatrix(subLength, H, G);
double[] subResult = new double[subLength];
subResult = subCopy(dWT, subResult, subLength);
double[] temp = MatrixOps.multiply(QMF, subResult);
dWT = subCopy(temp, dWT, subLength);
}
return dWT;
}
برای بدست آوردن تبدیل ویولت یک سیگنال، یک سری توابع مادر ویولت وجود دارند که از لحاظ ریاضی درستی عملکرد آﻥها اثبات شده است و ما هم در اینجا قصد بررسی تک تک آﻥها را نداریم و جدای از پیچیدگی هر یک از آﻥها ﻣﯽتوان گفت که تا حدودی ﻣﯽتوان عملکرد مشابهی را از تمام انواع ویولت مادر انتظار داشت، و اما ویولت مادری که در این پروژه استفاده شده است اولین ویولت مادر و سادهﺗرﻳﻦ نوع آن ﻣﯽباشد که برای محدودیت های کاری ما کاملاً مناسب است. ویولت مادر در این پروژه از نوع Haar ﻣﯽباشد. در ادامه تولید فیلتر آینه ای متعامد توسط این الگوریتم تشریح ﻣﯽشود.

شکل 4-19: ويولت مادر Haar

همانطور که در شکل 4-19 می بینید، برای بدست آوردن فیلتر آینه ای متعامد در تبدیل ویولت Haar تنها دو مقدار برابر و معکوس کافی است. این فیلتر برای این نوع ویولت معمولاً برابر 1 و -1 است، اما در کارهای عملی معمولاً عددی نزدیک به 0.7 و -0.7 انتخاب ﻣﯽشود. در کد زیر ابتدا فیلتر پایین گذر از روی همین مقدار پیش فرض بدست آمده و در گام بعدی از روی فیلتر پایین گذر، فیلتر بالا گذر ساخته ﻣﯽشود.
static double[] getLowPass() {
double[] H = {.707106781186547,.707106781186547 };
return H;
}

public static double[] getHighPass(double[] H) {

پایان نامه
Previous Entries پایان نامه رایگان درباره محدودیت ها Next Entries منابع پایان نامه ارشد درباره دوران کودکی، کشورهای در حال توسعه، رژیم غذایی