Файл: Методы кодирования данных (Теоретические сведения).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 20.05.2023

Просмотров: 191

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

colors = color;

data = (double*)malloc(testtime*sizeof(double));

colons = (int*) calloc(colon_count,sizeof(int));

mat = disp = timer = 0;

excess = assimetry = 0;

haveNextNextGaussian = false;

nextNextGaussian = 0;

distrib_run();

}

double rnd_test::signal_func(double x){

return next_gauss() + 1.0 * sin(freq*x+phi);

}

void rnd_test::distrib_run(){

distrib_test();

}

void rnd_test::distrib_test(){

if ((colon_count<=0)||(testtime<=0)) return;

double begin = clock();

double min = 1e200 , max = -1e200 , s = 0 ,s2 = 0, s3=0, s4=0;

for (int i = 0;i<testtime;i++){

data[i] = signal_func(i); //сигнал по функции

if (min > data[i]) min = data[i]; //определение мин и макс сигнала

if (max < data[i]) max = data[i];

s+=data[i];

s2+=data[i]*data[i];

s3+=data[i]*data[i]*data[i];

s4+=data[i]*data[i]*data[i]*data[i];

}

double h = 1.000*(max-min)/colon_count;

for (int i = 0;i<testtime;i++){

int index = int((data[i]-min)/h);

if ((index>=colon_count)){

index = colon_count-1;

}

colons[index] ++;

}

int maxcol = 1;

for (int i = 0;i<colon_count;i++)

if (colons[i]>maxcol) maxcol = colons[i];

double end = clock();

mat = s/testtime ;

disp = s2/testtime - mat*mat;

double CKO = sqrt(disp);

excess = s4/(disp*disp)/testtime-3.0 , assimetry = s3/disp/CKO/testtime;

timer = double(end - begin);

}

int rnd_test::getmax(int *data,int size){

int m = data[0];

for (int i=1;i<size;i++)

if (m<data[i]) m = data[i];

return m;

}

int rnd_test::getmin(int *data,int size){

int m = data[0];

for (int i=1;i<size;i++)

if (m>data[i]) m = data[i];

return m;

}

void rnd_test::draw(HWND hWnd){

PAINTSTRUCT ps;

HDC hdc;

RECT Rect;

hdc = BeginPaint(hWnd, &ps);

GetClientRect(hWnd,&Rect);

int ey = Rect.bottom, by = Rect.top, ex = Rect.right, bx = Rect.left;

int maxy = (ey - by - 40 )/2 , maxx = int(0.95*(ex- bx));

int stepx = maxx / colon_count, minx = int(0.5*(ex- bx-stepx*colon_count));

if ((ex>=bx+colon_count)&&(ey>=16+by)){

int max = getmax(colons,colon_count);

int min = getmin(colons,colon_count);

for (int i=0;i<colon_count;i++){

HGDIOBJ hh = CreateSolidBrush(colors);

SelectObject(hdc,hh);

int curent_height = int(0.99*colons[i]*1.0/max*maxy);

Rectangle(hdc, minx + stepx*i,maxy,minx+stepx*(i+1),-curent_height + maxy);

DeleteObject(hh);

}

int *drawdata = (int*)malloc(sizeof(int)*colon_count);

for (int i=0;i<colon_count;i++) drawdata[i] = int(100*data[i]);

max = getmax(drawdata,colon_count);

min = getmin(drawdata,colon_count);

for (int i=0;i<colon_count;i++){

HGDIOBJ hh = CreateSolidBrush(colors*256);

SelectObject(hdc,hh);

int curent_height = int(99.99*data[i]*1.0/max*maxy);

Rectangle(hdc, minx + stepx*i,2*maxy,minx+stepx*(i+1),-curent_height + 2*maxy);

DeleteObject(hh);

}

}

int const charsize = 300;

TCHAR b[charsize]={0}, b1[charsize] = {0};

char a[charsize],a1[charsize]="Function has a signal ! \0";

sprintf_s(a,"M(X) = %6.3lf D(X) = %6.3lf Ecsess = %6.3lf Assimetry = %6.3lf Time spended %6.1lf ms\0",mat,disp,excess , assimetry , timer);

bool havesignal = (mat>0.1)||(fabs(excess)>0.1)||(fabs(assimetry)>0.1);

for (int i=0;i<charsize;i++){

if (a[i]>0) b[i] = 0 + a[i];

if (a1[i]>0) b1[i] = 0 + a1[i];

}

LPCWSTR A = (LPCWSTR)(&b) , A1 = (LPCWSTR)(&b1);

DrawText(hdc,A,-1,&Rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);

if (havesignal)

DrawText(hdc,A1,-1,&Rect,DT_SINGLELINE|DT_RIGHT|DT_VCENTER);

EndPaint(hWnd, &ps);

}

double rnd_test::rnd(){ //from 0 to 1

int iy = rnd_seed * 1220703125;

if (iy<0)

iy = iy +1073741824 + 1073741824;

rnd_seed = iy;

return iy * 0.4656613e-9;

}

double rnd_test::uniform(double a,double b){//from a to b

return a + (b-a)*rnd();


}

double rnd_test::normal(double m, double s){ //normal light version

double a = 0;

for (int i=0;i<12;i++)

a+=rnd();

return m+(a-6.0)*s;

}

double rnd_test::erl(){ //erlang distrinbution 1 1

return erlang(1,1);

}

double rnd_test::erlang(double m, double s){ //erlang distrinbution

int k = int(s);

double a = 0, b = s-k;

for (int i =0;i<k;i++)

a+=eyler()*m;

if(rnd()<b)

a+=eyler()*m;

return a;

}

void rnd_test::srnd(int seed){

if (seed%2==0) seed++;

rnd_seed = seed;

}

double rnd_test::eyler(){

double R = 0;

while (R==0) R = rnd();

return log(1.0/R);

}

double rnd_test::next_gauss(){

if (haveNextNextGaussian) {

haveNextNextGaussian = false;

return nextNextGaussian;

} else {

double v1, v2, s;

do {

v1 = 2*rnd()-1; // between -1 and 1

v2 = 2*rnd()-1; // between -1 and 1

s = v1 * v1 + v2 * v2;

} while (s >= 1 || s == 0);

double multiplier = sqrt(-2 * log(s)/s);

nextNextGaussian = v2 * multiplier;

haveNextNextGaussian = true;

return v1 * multiplier;

}

}

Список использованной литературы

  1. Френкс Л. Теория сигналов.
  2. Румянцев П. В. Азбука программирования в Win 32 API.
  3. В.П. Цымбал Теория информации и кодирование. 1992, Издательское объединения «Высшая школа».
  4. Э.Хант. Исскуственный интеллект. 1998.Москва. «Мир».
  5. Б.Д. Кудряшов Теория информации. 2009, Учебник для ВУЗов.
  6. В.М.Сидельников. Теория кодирования.
  7. Герберт Шилдт - Полный справочник по Java SE 6 Edition Издательский дом «Вильямс» 2009
  8. Зверева О.М., Саблина Н.Г. Среда Турбо Паскаль 7.0. Реализация простейших алгоритмов: Конспект лекций. Часть 1. - Екатеринбург: Изд-во УМЦ-УПИ, 2011. - с.112
  9. Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка.//Пер. с англ. и предисл. Д.Б.Подшивалова - М.: Финансы и статистика,1999. - с. 151
  10. Ключарев А.А., Матьяш В.А., Щекин С.В. Структуры и алгоритмы обработки данных: Учебное пособие - СПбГУАП. СПб,2013 – с. 21-30
  11. Краснов С.В. Программирование на языке высокого уровня TURBO PASCAL: Учебное пособие. - Ульяновск: УлГТУ, 2014. - с.27-31
  12. Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. - М.: Диалектика, 2012. — с. 576
  13. Перминов О.Н. Программирование на языке Паскаль: Справочник.– М.: Радио и связь, 1999. – с.243-304
  14. MSDN
  15. Изучаем Java http://www.java-study.ru/java-uchebnik
  16. Шмидский Я.К. Самоучитель по программированию на языке СИ++ 2013г.
  17. Элементы теории графов. Ищенко М. Н. http://ppt4web.ru/matematika/ehlementy-teorii-grafov-sposoby-obkhodov-grafov.html
  18. Вятский социально-экономический институт. Кафедра Информатики и вычислительной техники. Теория графов и сетей. Методические указания. Т.В. Волченская.
  19. Научная библиотека http://edu.sernam.ru/book_p_math1.php?id=148
  20. Портал Алгоритмы методы исходники http://algolist.manual.ru/
  21. Портал Конспектов http://www.konspektov.net/
  22. Алгоритмы и Структуры данных Кормен
  23. http://www.intuit.ru/studies/courses/3505/747/lecture/26299
  24. http://metodist.lbz.ru/authors/informatika/2/files/pk/kl11gl2.pdf
  25. http://wm-help.net/lib/b/book/3683783285/34
  26. http://java.novgorod.ru/lect/Java_COURSE_Lec11.pdf
  27. http://www.cyberforum.ru/