Материал: Анализ сигнала на выходе электрической цепи

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

#include "calc.h"

#include "output.h"main (void)

{length_input_signal = 0, length_output_signal = 0, U =0, ULimit=0, UMax =0, t_n=0 , t_m =0, t_k =0, time[MAXSIZE] , UInput[MAXSIZE], UOutput[MAXSIZE]; n =0, choise, zapolneno =0 ;("chcp 1251 > nul");(choise = menu())

{("cls");(choise)

{1:_data(&U, &ULimit, &UMax, &t_n, &t_m, &t_k, &n, &zapolneno); _calculation (&length_input_signal, &length_output_signal, t_n, _k, n, t_m, time, U, UInput, ULimit, UMax, UOutput);;2: _output_source_data ( ULimit, UMax, U, t_m, t_n, t_k, n ); _table_on_the_console (time, UInput, UOutput, n, _input_signal, length_output_signal, &zapolneno); ;3:_from_file ( &U, &ULimit, &UMax, &t_n, &t_k, &t_m, &n, &length_input_signal,

&length_output_signal, time, UInput, UOutput, &zapolneno);;4:_time_and_UInput_and_UOutput_to_file ( UInput, UOutput, time, n);_table_data_to_file ( time, UInput, UOutput, ULimit, UMax, U, t_m, _n, t_k, n, length_input_signal, length_output_signal);;5:("Длительность входного сигнала = %8.3lf\n\n",length_input_signal);("Длительность выходного сигнала = %8.3lf\n\n",length_output_signal);

break;:("Команда выбранна неверно. Пожалуйста повторите выбор\n");

break;

}("pause");

} 0;

}.c

#include "menu.h"menu ()

{w;("cls");("________________________Menu___________________________\n");("\t 0 - Выход из программы\n");("\t 1 - Ввод данных с клавиатуры\n");("\t 2 - Вывод результатов на консоль \n");("\t 3 - Ввод данных из файла\n");("\t 4 - Сохранение всех данных в текстовые файлы \n");("\t 5 - Вывести только длительность импульса \n");("\n\n\t Ваш выбор: ");

scanf("%d",&w);w;

}.c

#include"calc.h"fill_time_array (double t_n, double t_k, double time[], int n )

{t = t_n, dt;i;= (t_k - t_n)/(n - 1);(i=0 ; i < n; i++)

{[i] = t ;+=dt;

}

}fill_array_input_voltage (double t_n, double t_m, double t_k ,double time[], double U, double UInput[], int n)

{i;(i=0; i < n ; i++)(time[i] <= t_m) [i]= (U * (time[i] - t_n)) / (t_m - t_n);[i]= (U * (t_k - time[i])) / (t_k - t_m)

}fill_array_output_voltage (int n, double ULimit, double UMax, double UInput[], double UOutput[])

{i;(i = 0; i < n ; i++) (UInput[i] <= 0) [i]= 0;if (UInput[i] <= ULimit)[i] = (UMax * UInput[i])/ULimit;[i] = UMax;

}length_signal(double t_k, double t_n, int n, const double signal[])

{i;count = 0;dt = (t_k - t_n)/(n - 1);max_signal = signal[0];(i = 1; i < n ; i++)( signal[i] > max_signal )_signal = signal[i];(i = 0; i < n ; i++)(signal[i] >= max_signal*0.5)++;(count - 1) * dt;

}data_calculation (double *length_input_signal, double *length_output_signal ,double t_n, double t_k, int n, double t_m ,double time[], double U, double UInput[], double ULimit,double UMax, double UOutput[],int *zapolneno )

{_time_array ( t_n, t_k, time, n );_array_input_voltage (t_n, t_m, t_k , time, U, UInput, n);_array_output_voltage (n, ULimit, UMax, UInput, UOutput);

*length_input_signal = length_signal(t_k, t_n, n, UInput);

*length_output_signal= length_signal(t_k, t_n, n, UOutput);

}.c

#include "input.h"enter_data(double*U, double*ULimit, double*UMax, double*t_n, double*t_m, double*t_k, int*n, int *zapolneno )

{("Ввод начального напряжения U =");

if( scanf("%lf", U) ==1)

*zapolneno+=1;("Пороговое напряжение Uporog =");( scanf("%lf", ULimit) ==1)

*zapolneno+=1;("Максимальное напряжение Umax =");

if (scanf("%lf", UMax)== 1)

*zapolneno+=1;("Начальное время =");(scanf("%lf", t_n) ==1)

*zapolneno +=1;

printf("Время в момент максимального напряжения t_m =");

if( scanf("%lf",t_m) == 1)

*zapolneno +=1;("Конечное время =");( scanf("%lf", t_k) == 1)

*zapolneno+=1;("Число точек =");( scanf("%d", n) == 1)

*zapolneno+=1;(*t_n < *t_m && *t_n < *t_k && *t_m < *t_k && *n > 0 && *U >= 0 && *ULimit >= 0 && *UMax >= 0)

printf("Данные корректны \n");

{("Данные не корректны. Программа будет закрыта\n\n");

exit(0);

}

}input_from_file (double *U, double *ULimit, double *UMax, double *t_n, double *t_k, double *t_m, int *n, double *length_input_signal, double *length_output_signal, double time[], double UInput[], double UOutput[],int* zapolneno)

{i; * in_txt; file_name[MLEN];buf[MAXSIZE];

*zapolneno=0;( "Введите имя файла: \n");("%s",file_name);_txt = fopen(file_name, "r");(in_txt != NULL)

{(buf, sizeof(buf),in_txt);( fscanf(in_txt, "%lf%lf%lf%lf%lf%lf%d",U, ULimit, UMax, t_n, t_m, t_k, n) == 7)

{

*zapolneno+=7;

}(buf, sizeof(buf),in_txt);(buf, sizeof(buf),in_txt);(buf, sizeof(buf),in_txt);(buf, sizeof(buf),in_txt);(buf, sizeof(buf),in_txt);(buf, sizeof(buf),in_txt);(i = 0 ; i < *n ; i++)(in_txt,"%*d%lf%lf%lf",&time[i], &UInput[i], &UOutput[i]); (buf, sizeof(buf),in_txt);(buf, sizeof(buf),in_txt);(buf, sizeof(buf),in_txt);(in_txt, "%lf%lf", length_input_signal, length_output_signal ); (in_txt);

}("Файл не удалось открыть %s \n", file_name);

}.c

#include"output.h"printTableHeader()

{("%6s%15s%15s%15s\n", "I", "Time", "Uin", "Uout");("__________________________________________________\n\n");

}output_table_on_the_console (double time[],double UInput[],double UOutput[],int n, double length_input_signal ,double length_output_signal,int*zapolneno )

{(*zapolneno == 7)

{i;

(); (i=0; i < n ; i++)

{("%6i%15.3lf%15.3lf%15.3lf\n", i, time[i], UInput[i], UOutput[i]);

}("___________________________________________________________________\n\n");("Length_in = %8.3lf\n", length_input_signal);("Length_out = %8.3lf\n", length_output_signal);

printf("_________________________________________________\n\n");

}("Не было ввода данных или при вводе произошел сбой. Пожалуйста повторите попытку\n\n");

}console_output_source_data (double ULimit, double UMax, double U, double t_m, double t_n, double t_k, int n )

{("Uporog = %8.3lf\n", ULimit);("Umax = %8.3lf\n", UMax);("U = %8.3lf\n", U);("t_m = %8.3lf\n", t_m);("t_n = %8.3lf\n", t_n);("t_k = %8.3lf\n", t_k);("Kol-vo\ntochek = %8d\n", n);("________________________________________\n\n");

}print_time_and_UInput_and_UOutput_to_file (double UInput[], double UOutput[], double time[],int n)

{* timeFile;* uInFile;* uOutFile;

int i;("Запись массивов в файл... ");= fopen("TableAndDataForPlot\\massiv_t.txt", "wt");= fopen("TableAndDataForPlot\\massiv_u_in.txt", "wt");= fopen("TableAndDataForPlot\\massiv_u_out.txt", "wt");(timeFile==NULL && uInFile==NULL && uOutFile==NULL)

{("Ошибка. Один из запрашиваемых файлов не найден");

exit(0);

}(i = 0; i < n; i++)

{(timeFile, "\n %6.3lf", time[i]);(uInFile, "\n %6.3lf", UInput[i]);(uOutFile, "\n %6.3lf", UOutput[i]);

}(timeFile);(uInFile);(uOutFile);

}print_table_data_to_file ( double time[], double Uin[], double Uout[], double ULimit, double UMax, double U, double t_m, double t_n, double t_k, int n,double length_input_signal, double length_output_signal)

{i;*table_data_file; file_name[MLEN]; ( "Введите имя файла: \n");("%s",file_name);_data_file = fopen(file_name, "wt");(table_data_file == NULL)

{("Ошибка. Файл не обнаружен");

exit(0);

}(table_data_file, "%6s%10s%10s%10s%10s%10s%10s\n", "U", "ULimit", "UMax", "t_n" , "t_m", "t_k", "n" );(table_data_file, "%6.3lf%10.3lf%10.3lf%10.3lf%10.3lf%10.3lf%10d\n", U, ULimit, UMax, t_n , t_m, t_k, n );(table_data_file, "\n");(table_data_file, "_________________________________________________________\n\n");(table_data_file, "%6s%15s%15s%15s\n", "I", "Time", "Uin", "Uout");(table_data_file, "________________________________________________________________\n\n");(i=0; i < n ; i++)

{(table_data_file, "%6i%15.3lf%15.3lf%15.3lf\n", i, time[i], Uin[i], Uout[i]);

}(table_data_file, "______________________________________\n");(table_data_file, "%6s%25s\n","length_input_signal","length_output_signal");(table_data_file, " %6.3lf%25.3lf", length_input_signal, length_output_signal);("ready.\n\n"); (table_data_file);

}

файлы .h.h

#ifndef _MAIN

#define _MAIN

#define MLEN 30

#include<stdio.h>

#include<stdlib.h>

#define MAXSIZE 400

#include<Windows.h>

#endif .h

#include"main.h"

#ifndef _MENU

#define _MENUmenu ();

#endif.h

#include "main.h"

#ifndef _CALC

#define _CALCfilling_time_array (double t_n, double t_k,double time[], int n );fill_array_input_voltage (double t_n, double t_m, double t_k ,double time[], double U, double UInput[], int n);fill_array_output_voltage (int n, double ULimit, double UMax, double UInput, double UOutput);length_signal(double t_k, double t_n, int n, const double signal[]);data_calculation (double *length_input_signal, double *length_output_signal, double t_n, double t_k, int n, double t_m ,double time[], double U, double UInput[], double ULimit,double UMax, double UOutput[]) ;

#endif.h

#include"main.h"

#ifndef _INPUT

#define _INPUTenter_data(double*U, double*ULimit, double*UMax, double*t_n, double*t_m, double*t_k, int*n, int*zapolneno);input_from_file (double *U, double *ULimit, double *UMax, double *t_n, double *t_k, double *t_m, int *n, double *length_input_signal, double *length_output_signal, double time[], double UInput[], double UOutput[],int* zapolneno);

#endif.h

#include "main.h"

#ifndef _OUTPUT

#define _OUTPUToutput_table_on_the_console (double time[],double UInput[],double UOutput[],int n,double length_input_signal,double length_output_signal, int*zapolneno );printTableHeader();console_output_source_data (double ULimit, double UMax, double U, double t_m, double t_n, double t_k, int n );print_time_and_UInput_and_UOutput_to_file (double UInput[], double UOutput[], double time[],int n);console_output_source_data (double ULimit, double UMax, double U, double t_m, double t_n, double t_k, int n ) ;print_table_data_to_file (const double time[],const double UInput[], const double UOutput[], double ULimit, double UMax, double U, double t_m, double t_n, double t_k, int n,double length_input_signal, double length_output_signal );

#endif


Источники

программа табулирование сигнал

1) Мария Полубенцева Процедурное программирование на языке C/C+

) «Практикум по программированию на языке Си», С. В. Козин, Н. А. Матиясевич, СПб 2008

) «Информатика. Анализ сигнала на выходе электрической цепи. Методические указания к курсовой работе», Л. Н. Бережной, И. О. Воронцова, Д. В. Окунева, СПб 2012