Розкладання сигналу в базисі Уолша h2>
Пояснювальна записка до курсової роботи з дисципліни
"Прикладне програмування" p>
Розробив студент групи 96ПУ2 Cалімов Т.Р. p>
Пензенський державний університет, Кафедра
"АУІС" p>
Пенза 1998 p>
Вступ h2>
В даний час індустрія виробництва комп'ютерів
і програмного забезпечення для них
є однією з
найбільш важливих сфер економіки
розвинених країн. Щорічно у світі
продаються десятки мільйонів
комп'ютерів. Тільки в США обсяг продажів комп'ютерів складає десятки мільйонів доларів і постійно
продовжує рости. p>
У чому ж причини такого стрімкого зростання індустрії
персональних комп'ютерів та їх порівняльна вигідність для багатьох ділових
застосувань? p>
Простота використання, забезпечена за допомогою діалогового способу взаємодії з
комп'ютером. p>
Відносно високі можливості з переробки
інформації, наявність програмного забезпечення, а також потужних
систем для розробки нового
програмного забезпечення. p>
Мова С + + - універсальна мова загального призначення,
область додатків якого - програмування систем в самому широкому сенсі.
Крім цього, С + + успішно використовується як у
багатьох додатках, так і в
потужних операційних системах. Реалізація С + +
здійснена для машин в діапазоні від найпростіших персональних
комп'ютерів до найпотужніших суперкомп'ютерів і для всіх операційних систем. p>
І тому в даному курсовому проекті необхідно
застосувати мова програмування С + +, як найбільш підходящий для вирішення
поставленого завдання. p>
Прикладне програмування h2>
Завдання на курсову роботу p>
Тема: розробка програми для розкладання сигналу в
базисі Уолша. p>
Вихідні дані: p>
Програма повинна виконувати наступні дії: p>
1) прийняти блок даних цілого типу, перший елемент у
фото вказує кількість значень у файлі (до 10000); p>
2) виділити кадр з 256 значень; p>
3) обчислити середнє арифметичне за формулою ; p>
4) видалити постійну складову із значень кадру
xi = xi - m; p>
5) розкласти сигнал у базисі Уолша; p>
6) коефіцієнти розкладання зберегти у файлі; p>
7) побудувати графік сигналу; p>
8) побудувати графік функції Уолша; p>
9) повторити пункти 2 - 8 до кінця файлу із зсувом
256 значень; p>
Скласти пояснювальну записку за формою: p>
a) завдання; p>
б) алгоритм; p>
в) програма; p>
г) контрольний приклад; p>
д) опис роботи програми. p>
1 Алгоритм роботи програми h2>
2 Текст програми h2>
# include p>
# include
p>
# include
p>
# include p>
FILE * f;// Покажчик на файл даних p>
FILE * out;// Покажчик на
вихідний файл p>
int
arr [256];
//Масив кадрa p>
int
uolsh [512];
//Масив коефіцієнтів Уолша p>
int code,
to_int;
//Змінні для перетворення p>
int clk2, loop,
clk1;// Змінні
циклів p>
float sum;// Середнє
арифметичне p>
float stepx,
stepy;// Кроки
графіка по х і по y p>
int delta;// Зміщення осі
абсцис p>
char ch [10];// Для читання рядка файлу p>
int gdriver =
DETECT, gmode, errorcode;// Для ініціалізації графіки p>
int
del = 40;
//Зміщення осі ординат p>
int max () (//Пошук
максимального числа p>
int tmp;// Тимчасова
мінлива p>
tmp = 0; p>
for
(clk2 = 0; clk2 <256; clk2 ++) p>
if (tmp
return tmp; p>
) p>
int ffread (FILE
* filptr, char st [10]) ( p>
int flg = 0;// Прапор
наявності помилки p>
size_t err;// Визначає
наявність помилки p>
* st -; p>
do ( p>
* st ++; p>
err = fread (st, 1,1, filptr); p>
if (err! = 1) ( p>
flg = 1; p>
break; p>
) p>
) while (st [0]! = 'n'); p>
st [0] = 0; p>
return flg; p>
) p>
void main () ( p>
clrscr (); p>
if ((f = fopen ( "int.dat",
"rt "))== NULL) ( p>
fprintf (stderr,
"Вхідний файл отсутствует.n "); p>
exit (1); p>
) p>
if ((out = fopen ( "out.dat",
"wt "))== NULL) ( p>
fprintf (stderr,
"Помилка створення файла.n "); p>
exit (1); p>
) p>
if (ffread
(f, ch) == 1) (
//Читання довжини файлу p>
fprintf (stderr, "Помилка при читанні файла.n "); p>
exit (1); p>
) p>
code = atoi (ch);// Перетворення рядка в число p>
if
(code <256) ( p>
fprintf (stderr, "Довжина менше одного кадраn "); p>
exit (1);// Довжина менше одного кадру p>
) p>
for
(clk1 = 0; clk1
clrscr
(); p>
for
(clk2 = 0; clk2 <256; clk2 + +) (//Читання
одного кадру p>
if (ffread (f, ch) == 1) (//Читання даних з файлу p>
fprintf (stderr, "Помилка при читанні файла.n "); p>
exit (1); p>
) p>
arr [clk2] = atoi (ch);// обчислення значення p>
) p>
// Обчислення середнього арифметичного кадру p>
sum = 0; p>
for
(clk2 = 0; clk2 <256; clk2 + +) sum + = arr [clk2]; p>
printf
( "Середнє значення амплітуди сигналу в кадрі одно% fn", p>
sum/256); p>
// Видалення постійної складової p>
printf
( "Видаляємо постійну складову ... n "); p>
for
(clk2 = 0; clk2 <256; clk2 + +) arr [clk2] -= int (sum/256); p>
// Розкладаємо сигнал у базисі Уолша p>
//Для розкладання знаходимо другу коефіцієнт p>
// 0 1/2 p>
// C1 =- U *