Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Разработка алгоритма цифровой фильтрации ⇐ ПредыдущаяСтр 4 из 4 Алгоритм записывается на любом языке программирования. В нашем примере будем использовать алгоритмический язык Паскаль. Будем предполагать, что на входе ЦФ действует гармонический сигнал
, (5) где a – амплитуда сигнала; fT – относительная частота сигнала (f – частота, T – интервал дискретизации); k – номер отсчета (k = 0, 1, 2, …, M); p0 – начальная фаза; M – максимальный номер отсчета. В начале нашего алгоритма необходимо ввести значения параметров сигнала и коэффициентов фильтра (конкретные значения не указаны):
a:= …; fT:= …; M:= …; p0:= …; c12:= …; c13:= …; c23:= …;
Переменными с12, с13, с23 обозначены коэффициенты c12, c13, c23 соответственно. Вместо системы уравнений (2), связывающих z -преобразования входных, выходных и вспомогательных переменных, получаем систему уравнений, связывающих отсчеты этих сигналов. Эти уравнения составляются по уравнениям (2) и структурной схеме (рисунок 9): . (6) В этих уравнениях, описывающих работу ЦФ, номер отсчета k изменяется, начиная от значения 0. При k = 0 система уравнений принимает следующий вид: . (7) Из этих уравнений видно, что для вычисления u0, v0 и y0 необходимы значения u-1, v-1, которые не вычислялись ранее. Эти значения необходимо задать как начальные условия. Предположим что они нулевые. Тогда фрагмент нашего алгоритма, в котором задаются начальные условия, приобретает следующий вид:
uk1:= 0; vk1:= 0;
В этом фрагменте uk1 и vk1 – переменные, обозначающие отсчеты uk-1 и vk-1 соответственно. Далее необходимо сформировать цикл, в котором вычисляются входные, выходные и вспомогательные отсчеты сигналов для всех значений k. Но при этом необходимо правильно упорядочить уравнения. Допустим, сначала будем производить вычисления uk. Но для этого необходимо знать vk, а этот отсчет вычисляется при помощи второго уравнения. Поэтому сначала необходимо производить вычисления по второму уравнению, а уже затем – по первому и третьему. Соответствующий фрагмент алгоритма будет выглядеть следующим образом: for k:= 0 to N Do Begin xk:= a*cos(2*Pi*fT*k+p0); vk:= uk1 + c12*vk1; uk:= xk + c23*vk + c13*vk1; yk:= vk1; vk1:= vk; uk1:= uk; End;
Переменные xk, vk, uk и yk введены для обозначения отсчетов сигналов xk, vk, uk и yk соответственно. Операторы
vk1:= vk; uk1:= uk;
введены для того, чтобы записывать данные в блоки задержки. Таким образом, алгоритм имеет следующий вид:
a:= …; fT:= …; M:= …; p0:= …; c12:= …; c13:= …; c23:= …; uk1:= 0; vk1:= 0; for k:= 0 to N Do Begin xk:= a*cos(2*Pi*fT*k+p0); vk:= uk1 + c12*vk1; uk:= xk + c23*vk + c13*vk1; yk:= vk1; vk1:= vk; uk1:= uk; End;
|