Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
диплом_Дегтярева_1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
314.14 Кб
Скачать
    1. Чтение данных из файла

Результаты каждого теста помещаются в отдельный файл, в котором каждый новый отсчет пишется в новой строке.

Данный модуль производит чтение результатов проведенного теста для дальнейшей обработки.

// Чтение из файла

// Аргументы:

// 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;

}

}

    1. Главная функция

// Главная функция

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;

}