их чисел і nn-розмірних власних векторів.
//Сортування СЧ і СВ
//Аргументи:
//eig - покажчик на масив СЧ
//Q - покажчик на масив СВ
//n - размерностьмассівовsort (double * eig, double ** Q, int n)
{i, j; fl=true; a; (fl)
{= false; (i=0; i lt; n - 1; i ++) (eig [i] lt; eig [i + 1])
{= true;=eig [i]; [i]=eig [i + 1]; [i + 1]=a; (j=0; j lt; n - 1; j ++ )
{= Q [i] [j]; [i] [j]=Q [i + 1] [j]; [i + 1] [j]=a;
}
}
}
}
2.4 Побудова графіка функції
Так як стандартна графічна бібліотека мови C не може бути застосована при перенесенні реалізації з ПК, цей метод в кожному разі буде модифікований, тому скористаємося більш зручною вільної графічною бібліотекою FLTK [10] мови C ++.
У цьому випадку модуль побудови графіка функції виглядає наступним чином.
//Побудова графіків
//Аргументи:
//vect - покажчик на масив значень
//n - кількість значень
# include lt; FL/FL. H gt;
# include Simple_window. h
# include Graph. h plot (double * vect, int n)
{namespace Graph_lib; int xmax=600;// Розмір окнаint ymax=400; int x_orig=xmax/2;// Точка (0,0) - центр окнаint y_orig=ymax/2; Point orig (x_orig, y_orig); int r_min=- 1000;// Діапазонint r_max=1000; int n_noits=(r_max - r_min) * n;// Кількість точок в
//діапазоне_scale=30;// Масштабуючий множітельint y_scale=30; p1 (100,100); _ window win (p1, 600, 400, Plot );// Створення окнаint xlen=xmax - 40;// Створюємо осі
constintylen=ymax - 40;// Робимо їх трохи менше
//размераокна (Axis :: x, Point (20, y_orig), xlen, xlen/x_scale, x );
//созданіекоордінатнихосей (Axis :: y, Point (x_orig, ylen + 20), ylen, ylen/y_scale, y );
//созданіекоордінатнихосей. attach (x);
win. attach (y); max=vect [0]; i; (i=0; i lt; n; i ++) (vect [i] gt; max)=vect [i]; * y1=(int *) malloc ( sizeof (int) * n); (i=0; i lt; n; i ++) [i]=vect [i] * ymax/max; _polyline poly; t=r_min; dt=(r_max - r_min)/n; (i=0; i lt; n; i ++)
{. add (Point (t, y1 [i]));=t + dt;
}. set_color (Color :: black) ;. attach (poly);// Додавання poly у вікно. wait_for_button ();// Висновок вікна
return;
}
2.5 Читання даних з файлу
Результати кожного тесту поміщаються в окремий файл, в якому кожен новий відлік пишеться в новому рядку.
Даний модуль виробляє читання результатів проведеного тесту для подальшої обробки.
//Читання з файлу
//Аргументи:
//vect - покажчик на вектор значень, зчитуються з файлу
# include lt; stdlib. h gt; readFile (double * vect)
{i; (% s , filename: ); filename [200];//={ Laquo; I: . txt }; (% s raquo ;, amp; filename); * file;=fopen (filename, r );
i=0; (file!=NULL)
{
while (true)
{= (double *) realloc (vect, sizeof (double) * (i + 1)); (vect!=NULL)
{[i]=fscanf (file, % f , amp; vect [i]);// Чітаемізфайла
//очередноечісло
} (vect [i] == EOF || vect == NULL)
{(file); i;
} ++;
} i;
}
}
Головна функція
//Головна функція
int _tmain (int argc, _TCHAR * argv [])
{f0=true, f1=true;
while (f0)
{= true;
//введення імені файлу і даних з нього
printf (% s raquo ;, Please enter the file name n ); * vect=(double *) malloc (sizeof (double)); n=readFile (vect);
//вибір методу обработкіnum; (% s raquo ;, Please select the method n ); (% s raquo ;, 1. FFT n ); ( % s raquo ;, 2. PCA n ); (% s raquo ;, 3. Correlation n ); (% s raquo ;, 4. Autocorrelation n ); (% s raquo ;, ...