Главная страница
Навигация по странице:

  • Восстановление сигнала. Моделирование в Xcos

  • КИХ-фильтрами ).Установившееся значение По уравнению фильтра можно определить установившееся значение

  • --> a0 = 1.2; --> a1 = 2.3; --> b0 = -0.8; --> C = syslin("d", a0*%z^2+a1*%z+1, %z^2+b1*%z+b0)

  • Запуск моделирования из скрипта

  • Лабораторная работа 3 Квантование и восстановление сигналов Квантование сигналов


    Скачать 138.5 Kb.
    НазваниеЛабораторная работа 3 Квантование и восстановление сигналов Квантование сигналов
    Дата29.12.2022
    Размер138.5 Kb.
    Формат файлаdoc
    Имя файлаlab3sci_theory (1).doc
    ТипЛабораторная работа
    #868927

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

    Квантование и восстановление сигналов


    Квантование сигналов

    Квантование (англ. sampling) – это получение выборки значений аналогового сигнала. Например, квантование синусоидального сигнала



    (здесь A – амплитуда сигнала,  – угловая частота в рад/с, а  – фаза в радианах) с периодом T состоит в том, что из него выбираются значения



    при целых значениях k. Последовательность значений



    представляет собой оцифрованный сигнал.

    Вся информация о значениях сигнала между моментами квантования теряется. Однако согласно теореме Котельникова-Шеннона сигнал всё же можно точно восстановить, если частота квантования по крайней мере в 2 раза превышает максимальную частоту в спектре сигнала. То есть, для этого синусоиду с частотой  нужно квантовать с частотой большей, чем 2.

    При некотором выборе частоты квантования и фазы в результате квантования синусоиды все измеренные значения могут оказаться нулевыми. Действительно, уравнение



    имеет решение , где k – целое число. Выбирая период квантования получаем нужное равенство при (в моменты квантования). Если же фаза сигнала  не равна нулю, измерения нужно выполнять не в моменты , а в моменты с соответствующим сдвигом во времени t0, так чтобы выполнилось условие

    .

    При выборе получаем , но это отрицательная величина при положительном значении . Чтобы получить t0 > 0, можно принять , где m – любое целое число, например, 1 (в этом случае время сдвига получается минимальное).

    Восстановление сигнала. Моделирование в Xcos

    Простейший элемент, восстанавливающий непрерывный сигнал по дискретным значениям – это фиксатор нулевого порядка. Получив (например, от компьютера) очередное значение, он удерживает его в течение всего следующего интервала квантования.

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

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



    Кружками обозначены измеренные значения.

    Чем чаще выполняется квантование, тем точнее восстановленный сигнал повторяет форму исходного сигнала.

    Цифровые фильтры

    Цифровой фильтр – это программа обработки оцифрованного сигнала. Цифровой фильтр из входной последовательности значений {e[k]} строит на выходе новую последовательность {v[k]}:



    Например, линейный фильтр второго порядка вычисляет очередное значение сигнала выхода v[k] по формуле

    v[k] = a2·e[k] + a1·e[k–1] + a0·e[k–2] – b1·v[k–1] – b0·v[k–2]

    Здесь a2,a1, a0, b1 и b0 – коэффициенты фильтра; e[k] – текущее (только что полученное) значение входного сигнала; e[k1] и e[k2] – два предыдущих значения входного сигнала полученные соответственно в моменты k–1 и k–2; v[k1] и v[k2] – два предыдущих значения выходного сигнала.

    Вычислим реакцию такого фильтра на единичный ступенчатый входной сигнал e[k], который равен 0 при всех k < 0 и равен 1 при всех k  0:

    … = e[–2] = e[–1] = 0

    e[0] = e[1] = e[2] = … = 1

    Подставляя эти значения, получаем

    v[0] = a2·e[0] = a2

    v[1] = a2·e[1] + a1·e[0] – b1·v[0] = a2 + a1b1·v[0]

    v[2] = a2 + a1 + a0b1·v[1] – b0·v[0]



    Так последовательно можно найти значения v[k] при всех k.

    Рассмотрим особый случай, когда b1 = b0 = 0, то есть уравнение фильтра не использует прошлых значений выхода:

    v[k] = a2·e[k] + a1·e[k–1] + a0·e[k–2]

    В этом случае получаем

    v[0] = a2, v[1] = a2 + a1

    v[2] = a2 + a1 + a0

    v[3] = a2 +a1 +a0



    Это значит, что, начиная с момента k = 2, все значения сигнала выхода будут равны a2 +a1 +a0, то есть переходный процесс заканчивается за конечное число шагов. Такие фильтры называются фильтрами с конечной импульсной характеристикой (КИХ-фильтрами).

    Установившееся значение

    По уравнению фильтра можно определить установившееся значение выходного сигнала (если оно существует). Пусть на вход поступает единичный ступенчатый сигнал. Тогда в установившемся режиме выход не меняется, то есть должно выполняться равенство

    v[k] = v[k–1] = v[k–2] = v = const

    Поэтому, учитывая, что e[k] = e[k1] = e[k2] = 1, получаем

    v = a2 + a1 + a0b1·vb0·v

    Отсюда сразу следует, что

    .

    Передаточная функция

    Вернёмся снова к уравнению фильтра:

    v[k] = a2·e[k] + a1·e[k–1] + a0·e[k–2] – b1·v[k–1] – b0·v[k–2]

    и запишем его в операторной форме, используя оператор запаздывания z–1, такой что

    z–1v[k] = v[k–1], … z–mv[k] = v[k–m].

    Получаем

    v[k] = a2·e[k] + a1·z–1e[k] + a0· z–2e[k] – b1· z–1v[k] – b0· z–2v[k]

    Перенесем все значения выходного сигнала в левую часть:

    v[k] + b1· z–1v[k] + b0· z–2v[k] = a2·e[k] + a1·z–1e[k] + a0· z–2e[k]

    и вынесем общие множители в обеих частях:

    (1 + b1· z–1 + b0· z–2) v[k] = (a2 + a1·z–1 + a0· z–2) e[k]

    Разделим обе части равенства на скобку в левой части:

    .

    Умножим числитель и знаменатель на z2:



    Функция



    называется передаточной функцией цифрового фильтра. Для КИХ-фильтра знаменатель передаточной функции имеет вид zN, например,

    .

    Заметим, что установившееся значение на выходе фильтра при единичном ступенчатом входе можно найти, подставив в передаточную функцию C(z) вместо z единицу:

    .

    Цифровые фильтры в Xcos





    Для моделирования цифрового фильтра в Xcos используется блок DLR (группа Системы с дискретным временем). Период квантования задается таймером, который подключен к красному входу. В свойствах блока нужно ввести числитель (Numerator) и знаменатель (Denominator) передаточной функции фильтра.

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



    При сохранении этих данных в модели Xcos программа проверяет, есть ли такие переменные. Поэтому их нужно заранее определить в рабочем пространстве Scilab (присвоив им любые подходящие значения, в данном случае – числовые).

    Можно также взять числитель и знаменатель из существующей модели Scilab:



    Модель цифрового фильтра должна быть заранее создана в рабочей области Scilab в формате передаточной функции:

    --> a0 = 1.2;

    --> a1 = 2.3;

    --> b0 = -0.8;

    --> C = syslin("d", a0*%z^2+a1*%z+1, %z^2+b1*%z+b0)

    Существует особый блок с передаточной функцией , который выполняет запаздывание на один такт. Действительно, операторное уравнение такого фильтра

    zv[k] = e[k] или v[k] = z1e[k]

    может быть записано в виде разностного уравнения

    v[k] = e[k–1].

    Это значит, что текущее значение выхода равно предыдущему значению входа.

    Запуск моделирования из скрипта

    Скрипт – это текстовый файл с расширением .sce. При запуске скрипта Scilab выполняет все команды, которые в нем записаны.

    Скрипт можно редактировать в любом текстовом редакторе, например, в Блокноте. В состав Scilab входит удобный текстовый редактор Scinotes, из которого скрипт можно сразу запустить, нажав клавишу F5. Если нужно выполнить не весь скрипт, а только некоторые команды (или даже одну команду!), нужно выделить эти команды и нажать клавиши Ctrl+E.

    Из скрипта можно загрузить в память модель Xcos и выполнить моделирование. Для этого нужно определить путь к файлу, затем загрузить модель и следующей командой запустить моделирование.

    Например, пусть наш скрипт называется lab3.sce, и пусть модель Xcos с именем lab3.zcos находится в том же каталоге. В скрипте определяем нужный каталог (имя файла при вызове функции get_absolute_file_path должно совпадать с именем скрипта):

    path = get_absolute_file_path('lab3.sce')

    устанавливаем этот каталог текущим:

    chdir(path)

    загружаем в память модель Xcos:

    importXcosDiagram('lab3.zcos');

    и запускаем моделирование:

    xcos_simulate(scs_m, 4);

    В последней команде scs_m – это название специальной структуры данных, задающей режимы моделирования, а число 4 обозначает команду на полную компиляцию модели.

    Перед вызовом команды моделирования можно изменить значения переменных модели, например:

    b0 = 1.1;

    xcos_simulate(scs_m, 4);

    Построение ступенчатых графиков

    Scilab позволяет строить графики специального типа, например, ступенчатые. Они полезны тогда, когда сигнал по своей природе имеет ступенчатую форму, например, сигнал на выходе фиксатора нулевого порядка. В этом случае вместо команды plot используют команду plot2d2:

    scf()

    plot2d2(v.time, v.values);

    По умолчанию команда plot2d2 рисует линию черного цвета. Чтобы сменить цвет на синий, нужно получить ссылку на объект-график и установить свойство background:

    h = gce(); // получить ссылку на график

    h.children(1).foreground = 2 // синий цвет линии

    Вот цвета стандартной палитры

    0 black 1 black 2 dark blue

    3 bright green 4 sky blue 5 bright red

    6 purple 7 bright red 8 white

    9 light blue 10 blue 11 dark blue

    12 sky blue 13 dark green 14 dark green

    15 bright green 16 dark green 17 dark greenish blue

    18 greenish blue 19 dark red 20 dark red

    21 red 22 dark purple 23 bright purple

    24 dark reddish brown 25 dark reddish brown 26 reddish brown

    27 dark orange 28 pink 29 pink

    30 pink 31 pink 32 dark yellow


    написать администратору сайта