
- •Минобрнауки россии
- •Бакалавра
- •Санкт-Петербургский государственный электротехнический университет “лэти” им. В. И. Ульянова (Ленина)
- •Задание на выпускную квалификационную работу бакалавра
- •Содержание
- •Реферат
- •Определения, обозначения, сокращения
- •Введение
- •Тензометрический метод оценки состояния двигательных отделов центральной нервной системы
- •Структурная организация тензометрического треморографа
- •Измерительный блок
- •Устройство управления
- •Программное обеспечение
- •Структура программного обеспечения
- •Исследование вариантов программного обеспечения
- •Структурная организация аппаратного обеспечения тензометрического треморографа
- •Варианты реализации
- •Задачи статистической обработки изометрических данных
- •Алгоритм преобразования Фурье
- •Метод корреляции
- •Метод главных компонент
- •Реализация
- •Преобразование Фурье
- •Корреляция
- •Автокорреляция
- •Метод главных компонент
- •Сортировка
- •Построение графика функции
- •Чтение данных из файла
- •Главная функция
- •Технико-экономическое обоснование
- •Заключение
- •Список использованных источников
- •Приложение а
Чтение данных из файла
Результаты каждого теста помещаются в отдельный файл, в котором каждый новый отсчет пишется в новой строке.
Данный модуль производит чтение результатов проведенного теста для дальнейшей обработки.
// Чтение из файла
// Аргументы:
// vect - указатель на вектор значений, считываемых из файла
#include <stdlib.h>
int readFile( double * vect)
{
int i;
printf("%s","filename: ");
char filename[200];// ={"I:\\1.txt"};
scanf("%s", &filename);
FILE * file;
file = fopen(filename, "r");
i = 0;
if(file!= NULL)
{
while( true )
{
vect = (double *)realloc(vect, sizeof(double)*(i+1));
if(vect != NULL)
{
vect[i] = fscanf(file,"%f",&vect[i]);//читаем из файла
//очередное число
}
if(vect[i] == EOF || vect == NULL)
{
fclose(file);
return i;
}
i++;
}
return i;
}
}
Главная функция
// Главная функция
int _tmain(int argc, _TCHAR* argv[])
{
bool f0 = true, f1 = true;
while (f0)
{
f1 = true;
// ввод имени файла и данных из него
printf("%s", "Please enter the file name\n");
double * vect = (double *)malloc(sizeof(double));
int n = readFile (vect);
//выбор метода обработки
int num;
printf("%s", "Please select the method\n");
printf("%s", "1.FFT\n");
printf("%s", "2.PCA\n");
printf("%s", "3.Correlation\n");
printf("%s", "4.Autocorrelation\n");
printf("%s", "5.To attach another file\n");
printf("%s", "6.Exit\n");
while(f1)
{
printf("%s", "Number: ");
scanf("%d", &num);
if(num == 1)
{
int i = n;
if (n&(n-1))//если побитовое и дает 1, то n //не //равно степени 2
{
while ( i&(i-1))
{
vect = (double *)realloc(vect, sizeof(double)*(i+1));
vect[i] = 0;
}
}
complex * y = (complex*)malloc(sizeof(complex) * i);
FFT(vect, i, y);
double * y1 = (double*)malloc(sizeof(double) * i);
for( int j = 0; j < i; j++)
y1[j] = sqrt(powx(y[j].re,2) + powx(y[j].im,2));
plot(y1, n);
free(y);
free(y1);
}
else if (num == 2)
{
double * rPCA = (double*)malloc(sizeof(double));
PCA(vect, rPCA, n, 1000);
plot(rPCA, 1000);
free(rPCA);
}
else if(num == 3)
{
printf("%s", "Please enter the name of the second file\n");
double * vect_1 = (double *)malloc(sizeof(double));
readFile(vect_1);
double * corr = (double *)malloc(sizeof(double) * n);
correlation(vect, vect_1, corr, n);
plot(corr, n);
free(vect_1);
free(corr);
}
else if(num == 4)
{
double * acorr = (double *)malloc(sizeof(double)*n);
autocorrelation(&vect[0], n, &acorr[0]);
plot(acorr, n);
free(acorr);
}
else if(num == 5)
f1 = false;
else if(num == 6)
{
f1 = false;
f0 = false;
}
}
}
return 0;
}