Перейти к содержимому

RNP-135 t14.cpp Интеграл, свертки, корреляция, ИХ, ПХ, функции Дельта, Хевисайда. ПРАКТИКА

Sergej Romanets, Сергей Романец

0:00 / 0:00

RNP-135 t14.cpp Интеграл, свертки, корреляция, ИХ, ПХ, функции Дельта, Хевисайда. ПРАКТИКА

134 просмотра · 1 день назад
Sergej Romanets, Сергей Романец
1,76 тыс. подписчиков
134 просмотра · 1 день назад
СОДЕРЖАНИЕ: 00:00 - демо от t0.exe до t14.exe - - 02:43 - модель реальной системы Импульсная характеристика = ИХ-тест-1 Вход функция Хевисайда Выход: ПХ переходная характеристика - - 03:31 - модель идеальной системы Импульсная характеристика ИХ = Дельта функция Вход: функция Хевисайда Выход: функция Хевисайда - - 05:16 - отладка вывода на экран параметра времени для ПХ 13:33 - начало разработки модели. Черновики 13:54 - исходный код от t0.cpp до t14.cpp. Редактор FAR 17:50 - смещение графика импульсной характеристики ИХ int shift( int s); s - это глобальная переменная. Аргумент (время) функции интеграла y(s). При изменении s, стрелками LEFT, RIGHT, происходит копирование ИХ из массива h1[17], в определенную переменной s позицию в пределах массива h[17*3]. 17:59 - реализация вычисления ИНТЕГРАЛа СВЕРТКИ void correlation( ); 18:40 - исходный код от t0.cpp до t14.cpp. Редактор Visual Studio 19:40 - примеры входных цифровых сигналов x[ ] 20:14 - примеры цифровой функции ИХ h[ ] 20:42 - шаблон для выходного цифрового сигнала y[ ] 20:54 - смещение графика импульсной характеристики ИХ int shift( int s); 21:09 - реализация вычисления ИНТЕГРАЛа СВЕРТКИ void correlation( ); 21:46 - void main( ); 27:22 - ссылки на другие видео Литература: Сиберт У.М. Цепи, сигналы, системы. Djv. https://publ.lib.ru/ARCHIVES/S/SIBERT... Видео лекции по радиотехнике: МАИ Институт «Радиоэлектроника, инфо коммуникации и информационная безопасность». Лектор: Т.Я. Шевгунов. http://romanets.com/R1.htm    • Радиотехника   // // t14.cpp // char far * p = (char far *) 0xA0000000L; void plot( int x, int y, int c) { p[y*320 + x] = c; } void graph(); void clear(); void text(); //int _x[] = { 0,0,0,0,0, 4,4,4, 4, 4,4,4, 0,0,0,0,0,}; int x[] = { 0,0,0,0,0, 0,0,0, 0, 0,0,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1, 1, 1,1,1, 1,1,1,1,1, // Heaviside //1,2,3,4,5, 6,7,8, 9, 10,11,12, 13,14,15,16,17, // x(t) = t //1,2,3,4,5, 6,7,8, 8, 7,6,5, 4,3,2,2,3, // x(t) = // 1,0,-1,0,1,0,-1,0, 1, 0,-1,0, 1,0,-1,0,1, // sin // 1,0,1,0,1,0,1,0, 1, 0,1,0, 1,0,1,0,1, // sin 1,1,0,0,0, 0,0,0, 0, 0,0,0, 0,0,0,0,0, //1,1,1,1,1, 1,1,1, 1, 1,1,0, 0,0,0,0,0, }; int x_size = sizeof(x)/sizeof(int); int fx(int i) { if ( i less 0 || i greater x_size-1 ) return 0; else return x[i]; } //int _h0[] = { 0,0,0,0,0, 1,2,3,4,3,2,1, 0,0,0,0,0,}; int h0[] = { 0,1,2,3,4, 5,6,7, 8, 7,6,5, 4,3,2,1,0,}; //int h1[] = { 0,0,0,0,0, 2,4,6, 8, 7,6,5, 4,3,2,1,0,}; //int h1[] = { 0,2,4,6,8, 9,10,9, 8, 7,6,5, 4,3,2,1,0 }; // // delta function //int h1[] = { 16,0,0,0,0, 0,0,0, 0, 0,0,0, 0,0,0,0,0 }; // ! int h1[] = { 0, 1, 0,-1,0,1,0,-1,-2,0,1,4,8,16,8,4,1, }; // int h1_size = sizeof(h0)/sizeof(int); int h[] = { 0,0,0,0,0, 0,0,0, 0, 0,0,0, 0,0,0,0,0, // 0,1,2,3,4, 5,6,7, 8, 7,6,5, 4,3,2,1,0, 16,0,0,0,0, 0,0,0, 0, 0,0,0, 0,0,0,0,0, // delta function 0,0,0,0,0, 0,0,0, 0, 0,0,0, 0,0,0,0,0, }; int h_size = sizeof(h)/sizeof(int); // int y[] = { 0,0,0,0,0, 0,0,0, 0, 0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0, 0, 0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0, 0, 0,0,0, 0,0,0,0,0, }; int y_size = sizeof(y)/sizeof(int); int s = 15; void draw( int M[],int size, int xo, int yo, int color) { for (int i=0; i less size; i++) plot( xo+i, yo - M[i], color); } // void shift( int s) { for (int i=0; i less h_size; i++) h[i] = 0; for (i=0; i less h1_size; i++) if ( s less h1_size-1 ) h[i + h1_size-1 - s] = h1[i]; } // void correlation() // y = x*h { for ( int i=16-s; i less y_size; i++) // for cool animation { y[i] = 0; } gotoxy( 2, 8); printf( "sum="); // RNN: cool debug for ( i=0; i less y_size; i++) { int sum = 0; for ( int j=0; j less= i; j++) sum += x[j]*h[j]; y[16 - s] = sum/1; printf( "%i ", sum); } gotoxy( 12, 2); printf( " "); gotoxy( 12, 2); printf( "t=%i ", -(s-15)); // time or shift } // void main() { graph(); while( 1 ) { gotoxy( 12, 15); printf( "Press LEFT or RIGHT arrow"); gotoxy( 12, 16); printf( "Exit ESC"); gotoxy( 12, 17); printf( " "); gotoxy( 12, 17); printf( "sift=%i %i %i", s, 0, 0); correlation(); // y = x*h // (fn, size, x, y, color) draw( x, x_size, 10, 20, 14); gotoxy( 12, 3); printf( "x[]"); draw( h, h_size, 10, 40, 14); gotoxy( 12, 5); printf( "h[]"); draw( y, y_size, 10, 194,13); gotoxy( 12, 25); printf( "y[]=x[]*h[]"); int ch = getch(); clear(); delay(60); if ( ch==0 ) { ch = getch(); if ( s less -16 ) s = -17; else if ( s greater 13 ) s = 14; if ( ch == 75 ) // LEFT shift( ++s); else if ( ch == 77 ) // RIGHT shift( --s); } if ( ch == 27 ) // ESC break; } text(); } http://romanets.com/