русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Лабораторная работа №3


Дата добавления: 2015-06-12; просмотров: 593; Нарушение авторских прав


 

Исследование цифрового фильтра.

 

1. Краткие сведения из теории:

 

Пусть имеется последовательность чисел xn, представляющая собой ряд равноотстоящих измерений некоторой величины x(t), в котором n – целое

(n = 0, 1, 2,……), а t – непрерывная переменная. Обычно t обозначает время, но не обязательно. Если последовательность yn вычисляется по формуле:

 

(1)

 

то эта формула определяет цифровой фильтр. В формуле (1) xn ≡ x(n), коэффициенты ck и dk являются константами. Таким образом, цифровой фильтр есть просто линейная комбинация равноотстоящих отсчетов xn-k некоторой функции x(t), а также вычисленных значений на выходе yn-k. Для каждого следующего один за другим n формула сдвигает текущую отсчетную точку вдоль потока отсчетов xn-k. Фильтр, определяемый формулой (1), называется рекурсивным. Если в (1) все dk = 0, то фильтр, определяемый (2), называется нерекурсивным. Примером нерекурсивного фильтра может служить широко используемое сглаживание «пятерками».

(2)

В этом случае формула (2) имеет вид:

 

(3).

Здесь под сглаживанием понимается приближение равноотстоящих данных прямой линией по методу наименьших квадратов.

Примером рекурсивного фильтра может служить формула трапеций для численного интегрирования:

 

(4)

Формула трапеций приближает площадь под некоторой кривой суммой площадей трапеций. Очевидно, что рекурсивный фильтр «запоминает» прошлые данные, так как значение yn в правой части формулы используется для вычисления yn+1, и т. д.

Для практических целей используются цифровые фильтры только ограниченной длины. Это означает, что в таких фильтрах содержится конечное количество членов. Если коэффициенты фильтра ck и dk постоянны, т. е., являются константами, то такие фильтры называются инвариантными. Инвариантные фильтры наиболее часто используются на практике.



Термин «фильтр» происходит из электротехники и радиотехники, где фильтры главным образом используются для преобразования сигналов из одной формы в другую, в частности, для «подавления» одних частот, присутствующих в сигнале, и пропуске на выход других часто. (Известно, что все сигналы можно представить как сумму большого количества гармонических колебаний с различными частотами и амплитудами). Однако в настоящее время цифровые фильтры находят гораздо более широкое применение.

Пусть, например, проведены измерения роста студентов в некоторой учебной группе, и их весов. Результаты таких измерений можно трактовать как взятие отсчетов xn (равноотстоящих, так как их можно пронумеровать) соответствующих непрерывных x(t) величин роста и веса. Следовательно, эти результаты могут быть подвергнуты обработке цифровыми методами, и в частности, цифровой фильтрации. Другим примером использования цифровых данных является обработка метеоинформации (наблюдения за температурой, давлением и т.п.). В этом случае в качестве интервалов наблюдения могут использоваться различные равные промежутки времени (часы, сутки и т. п.). Примером использования цифровых данных на железнодорожном транспорте может служить анализ сигналов вагона – дефектоскопа, уровень которого зависит от скорости движения вагона, а измерения уровня сигнала (его амплитуды) производится относительно его среднего значения. Если считать, что измерение значений происходит в некоторые дискретные моменты времени, то для обработки полученных данных целесообразно использовать методы цифровой фильтрации.

Наиболее часто с помощью цифровых фильтров решаются следующие задачи обработки данных:

· Приближение наборов экспериментальных данных различными функциями для получения аналитических зависимостей и формул (аппроксимация данных);

· Сглаживание и фильтрация экспериментальных данных с целью исключения отдельных составляющих, искажающих реальную структуру данных;

· Выполнение различных операций над данными в численном виде, например, интегрирование, дифференцирование и т. п.

· Интерполяция и экстраполяция экспериментальных данных в случае их нехватки.

 

Кроме того, цифровые фильтры являются важными элементами имитационных моделей различных систем.

 

В общем случае, цифровой фильтр преобразует некоторую входную последовательность данных в выходную последовательность. Таким образом, цифровой фильтр может интерпретироваться как некоторый «черный ящик», имеющий вход {xi} и выход {yi}. Преобразование входных данных, выполняемое фильтром, задается его передаточной функцией H(f), где f – циклическая частота.

 

 

 

Передаточная функция H(f) разумеется, является периодической функцией от частоты f. Однако из-за исходной дискретизации с единичными интервалами она имеет смысл только на интервале длиной 1, который обычно берется в пределах от - 0.5 до 0.5. Продление передаточной функции за пределы этого диапазона приведет к смешению частот, которые перешли при дискретизации из – за наложения в основной интервал, с теми, которые до дискретизации лежали в стороне. Поэтому далее будет рассматриваться только один период передаточной функции. Частота среза, на которой начинает наблюдаться наложение из – за дискретизации, называется частотой свертывания, или частотой Найквиста [1]. Пример передаточной функции цифрового фильтра представлен на рисунке 1.

 

 

Рис. 1. Передаточная функция цифрового фильтра.

Пример работы цифрового фильтра.

 

Пусть необходимо построить фильтр, пропускающий нулевую частоту (постоянную составляющую), и задерживающий частоту f = 0.5. Можно показать, что передаточные функции фильтров такого типа имеют вид:

 

H(f) = 2aCos(2πf )+ b (5)

 

а сам фильтр определяется следующим выражением [1,2]:

 

yn = a xn-1 + b xn + a xn+1 (6).

 

Из постановки задачи следует, что на (5) налагаются следующие два условия:

 

H(0) = 1 и H(0.5) = 0. Подставив эти условия в (5), можно получить следующие значения для коэффициентов искомого фильтра:

 

a = 0.25; b = 0.5.

 

Это приводит к следующему фильтру: [0.25, 0.5, 0.25].

 

Если образовать входную последовательность, состоящую из частот: нулевой и f = 0.5, периодически изменяющихся с изменением номера интервала, как это показано в таблице 1, то при применении трех коэффициентов рассматриваемого фильтра к любым трем последовательным значениям суммы двух частот (столбец 4), можно увидеть, что на выходе фильтра будет выходная последовательность, совпадающая с входной последовательностью из столбца 2.

 

Табл. 1. Иллюстрация работы фильтра.

 

n Cos(0*n) Cos(0.5*n) сумма
-1
-1
-1
-1

 

 

Можно также убедиться, что применение коэффициентов фильтра к первой последовательности (столбец 2) дает ту же последовательность на выходе, в то время, как применение этих коэффициентов ко второй последовательности дает выходную последовательность, состоящую из одних нулей. Таким образом, разработанный фильтр пропускает одну составляющую входной последовательности и подавляет другую.

 

2. Операторы управления вычислительным процессом в MatLab.

 

Операторы управления вычислительным процессом главным образом применяются при разработке программ в системе MatLab. Однако система MatLab построена таким образом, что такие операторы могут быть использованы и в диалоговом режиме.

Как и во всех языках программирования, к управляющим операторам MatLab относятся операторы ветвления (условные операторы) и операторы организации циклов. Все операторы циклов и условные операторы в MatLab построены в виде составного оператора, который начинается одним из служебных слов (if, switch, while, for) и заканчивается служебным словом end. Операторы между этими словами воспринимаются системой как части одного составного (сложного) оператора. Поэтому нажатие клавиши <Enter> для перехода к следующей строке не приводит в данном случае к выполнению этих операторов. Выполнение операторов начинается только тогда, когда введена «закрывающая скобка» составного оператора end, а затем нажатия <Enter>. Если несколько составных операторов такого типа вложены один в другой, то вычисления начинаются только тогда, когда введен end самого внешнего составного оператора.

 

2.1. Условный оператор if.

 

В общем виде, оператор if имеет вид:

if <условие >

<операторы_1>

else

<операторы_2>

end

 

Сокращенная форма условного оператора имеет вид:

if <условие >

<операторы>

В качестве условия используется выражение вида:

<имя переменной_1 > <операция сравнения><имя переменной_2 >

Операции сравнения в системе MatLab аналогичны операциям сравнения в языке C++, за исключением операции «не равно», которая записывается в следующем виде: ~=(не равно).

 

Пример:

» 'b' > 'а' (Возможно применение операций сравнения к символьным выражениям);

Следует отметить некоторые важные особенности операторов сравнения в системе MatLab.

· Если один из операндов — скаляр, происходит сравнение всех элементов второго операнда-массива со значением этого скаляра;

· В общем случае операторы отношения сравнивают два массива одного размера и выдают результат в виде массива того же размера: » М>[0 1;.1 0]

 

Таким образом, спектр применения операторов сравнения в системе MATLAB шире, чем в обычных языках программирования, поскольку операндами являются не только числа, но и векторы, матрицы и массивы. Возможно применение операторов отношения и к символьным выражениям:

Допустимой является конструкция вложенного оператора if:

if <условие_1>

<операторы_1>

elseif <условие_2>

<операторы_2>

elseif <условие_3>

<операторы_3>

------------------------------------------------

else

<операторы>

end

Оператор elseif выполняется тогда, когда <условие_1> не выполнено. При этом вначале проверяется <условие_2>. Если оно выполнено, то выполняются <операторы_2>, если нет, то <операторы_2> игнорируются, и проверяется <условие_3>, и т. д. Таким образом, логика выполнения вложенного оператора if не отличается от логики выполнения аналогичного оператора в языке C++.

 

2.2. Обобщением условного оператора if в системе MATLAB является оператор переключения switch. Он имеет следующий синтаксис:

swith <выражение, скаляр или строка символов >

case <операторы_1>

case <операторы_2>

-----------

otherwise

<операторы >

end

 

Логика выполнения оператора переключения в системе MATLAB не отличается от логики выполнения оператора переключения в языке C++.

 

2.3. Оператор цикла с предусловием while.

В общем виде, оператор цикла с предусловием имеет вид:

 

while <условие >

<операторы >

end

 

Операторы цикла выполняются до тех пор, пока <условие > истинно. При этом среди операторов в теле цикла обязательно должны быть такие, которые изменяют значения одной из переменных, указанных в <условие >.

Пример:

>> i = 1;

>> while i <=5

x = i/5

y = sin(x)

i = i+1

disp([x,y])

end

 

0.2000 0.1987

0.4000 0.3894

0.6000 0.5646

0.8000 0.7174

1.0000 0.8415

 

>>

 

 

2.4. Арифметический оператор цикла.

В общем виде, арифметический оператор цикла имеет вид:

 

for <имя> = <НЗ>: <Шаг>: <КЗ >

<операторы>

end

Здесь <имя> - имя управляющей переменной цикла, <НЗ> - начальное значение управляющей переменной цикла, <Шаг> - значение шага изменения управляющей переменной цикла, <КЗ > - конечное управляющей переменной цикла. Если параметр <Шаг> опущен, то по умолчанию его значение принимается равным 1.Для досрочного выхода из цикла применяется оператор break.

 

 

Пример:

>> for i = 1:5

x = i/5

y = sin(x)

if i == 1

disp([' i ',' x ',' sin(x) '])

end

disp([i,x,y])

end

 

i x sin(x)

1.0000 0.2000 0.1987

2.0000 0.4000 0.3894

3.0000 0.6000 0.5646

4.0000 0.8000 0.7174

5.0000 1.0000 0.8415

>>

Символы ( ) (круглые скобки) в системе MATLAB используются для задания порядка выполнения операций в арифметических выражениях, указания последовательности аргументов функции и указания индексов элементов вектора или матрицы.

 

3. Порядок выполнения работы.

 

3.1. Разработать структуру нерекурсивного цифрового фильтра в соответствии с заданием, полученным от преподавателя. В качестве исходных данных могут быть предложены различные передаточные функции и частоты, которые фильтр должен пропускать, или подавлять.

3.2. Проверить работу полученного фильтра в режиме ручного счета, построив таблицу вида Табл. 1.

3.3. Разработать последовательность операторов (диалоговую программу), реализующих алгоритм работы полученного фильтра. Сравнить результаты работы диалоговой программы с результатами из п. 3.2.

3.4. Разработать структуру рекурсивного цифрового фильтра в соответствии с формулой (4). Выполнить интегрирование функции в соответствии с заданием, полученным от преподавателя, и сравнить полученный результат с результатом работы стандартной функции trapz, обращение к которой имеет следующий вид:

 

y = trapz(F); где F – вектор, содержащий значения интегрируемой функции.

 

4. Содержание отчета.

Отчет должен содержать краткие пояснения по разработке структуры цифровых фильтров, алгоритмов их реализации, результаты ручного счета и работы диалоговой программы. Результаты работы программы должны быть представлены в виде таблицы, графика передаточной функции, графиков входных и выходных последовательностей данных. В отчете должны быть приведены краткие выводы по проделанной работе.

 



<== предыдущая лекция | следующая лекция ==>
Лабораторная работа №2 | Создание M – файлов в среде MATLAB.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.102 сек.