Очевидно, что если мы заменим непрерывное входное воздействие и непрерывную импульсную характеристику ступенчатыми аппроксимирующими функциями (рис.7), то в итоге получим приближенное вычисление интеграла свертки (5):
Аналогично преобразуется формула (6):
Задание. Смоделировать прохождение белого шума через линейную систему с импульсной характеристикой, показанной на рис. 8
Первый вопрос заключается в выборе шага дискретизации. Вычисляя Фурье-преобразование, мы получаем функцию, достаточно быстро стремящуюся к нулю при увеличении частоты . Выбрав для определенности и , в соответствии с методикой выбора шага дискретизации получим . Поэтому длительность входного сигнала в шагах дискретизации приблизительно равна 35. В следующей программе моделируется данная ситуация. |
Программа 1 ( исходный файл lect3_1.cpp , выполняемый файл lect3_1.exe)
В программе реализован следующий порядок действий:
#define N 500 // Длина входной реализации #define L 35 // Длительность импульсной характеристики #include <math.h> #include <stdlib.h> #include "model.h" float x[N], k[L], y[N]; // Массивы для входной реализации, импульсной // характеристики и выходной реализации void main(void) { int i, p; for(i=0; i < N; i++) // Формирование реализации дискретного белого // гауссовского шума x[i] = gauss (0.0, 1.0); for(i=0; i < L; i++) // Формирование импульсной характеристики k[i] = 0.5; for(i=0; i < N; i++) // Вычисление интеграла свертки { y[i] =0.0; for(p=0; p < L; p++) {if((i-p)>= 0) y[i] = y[i] + x[i-p] *k[p]; } } Init_graph(); // Вывод на график graf_2("input and output signals", x, y, 0, 499); Close_graph(); } |