Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Дополнительные замечания о моделировании квантования в Simulink и MATLAB




 

В библиотеке Simulink Library пакета MATLAB (вер.6.1) имеется несколько разделов, содержащих блоки квантования и квантования с последующим кодированием. Рассмотрим эти блоки.

В разделе Simulink\Nonlinear находим блок квантования Quantizer (рис.37):

Рис.37. Блок квантования Quantizer

Точно такой же блок квантования имеется в разделе DSP Blockset\Quantizers. В том же разделе находятся еще два блока: Uniform Encoder – блок равномерного квантования с кодированием и соответствующий декодер Uniform Decoder (рис.38).

Рис.38. Блоки равномерного квантования с кодированием

Чтобы разобраться с возможностями этих блоков, сравним результаты их работы между собой, для чего в среде Simulink создадим схему, показанную на рис.39:

Рис.39. Схема для исследования блоков равномерного квантования с кодированием

С выхода генератора синусоидальных колебаний сигнал единичной амплитуды и частотой, равной 1 рад/с (рис.2), подается на входы квантователя и равномерного кодера. На рис.41 показан выходной сигнал квантователя с единичным интервалом квантизации, а на рис.42 и рис. 43 показан выходной сигнал 2-битного равномерного кодера.

Очевидное различие выходных сигналов квантователя и кодера обусловлено различием алгоритмом их работы.

Так, квантователь преобразует входной сигнал u в выходной сигнал y по правилу округления к ближайшему целому:

 

y = q round(u/q),

где q – интервал квантизации (в данном примере q=1), round() – функция округления к ближайшему целому.

Равномерный кодер осуществляет две операции над каждым отсчетом входного сигнала:

1) квантует значение с той же точностью;

2) кодирует значение с плавающей запятой в целое значение.

На первом шаге происходит квантование входного значения на 2B равномерных уровней в диапазоне [-V,(1-21-B)V], где B – параметр Bits, а V – параметр Peak(в данном примере B=2, V=1). Процесс квантования округляет как положительные, так и отрицательные входные значения к ближайшему снизу уровню квантования, за исключением тех, которые попадают точно на границу квантования. Количество бит B может быть любым целым числом от 2 до 32, включительно.

На следующем шаге квантованные вещественные числа с плавающей запятой преобразуются (кодируются) в одно из 2B целых чисел. Если параметр Output type установлен в значение Unsigned integer (целое положительное число)(соответствующий вид выходного сигнала показан на рис.42), наименьшее вещественное значение –V преобразуется в целое число 0, а наибольшее вещественное значение (1-21-B)V преобразуется в целое число 2B-1. Промежуточные квантованные значения с плавающей точкой линейно (равномерно) преобразуются в целые числа из диапазона (0, 2B-1). Для обеспечения эффективности, выходные данные кодера имеют тип (uint8, uint16, или uint32), с минимальным количеством бит, равным или большим B.

Если параметр Output type установлен в значение Signed integer (целое число со знаком)(соответствующий вид выходного сигнала показан на рис. 43), наименьшее вещественное значение –V преобразуется в целое число –2B-1, а наибольшее вещественное значение (1-21-B)V преобразуется в целое число 2B-1-1. Промежуточные квантованные значения с плавающей точкой линейно (равномерно) преобразуются в целые числа в диапазоне [-2B-1, 2B-1-1]. Для обеспечения эффективности, выходные данные кодера имеют тип (uint8, uint16, или uint32), с минимальным количеством бит, равным или большим B.

 

   

Рис.40. Исходный сигнал                                     Рис.41. Выход квантователя

    

 Рис.42. Выход равномерного кодера (Unsigned integer)      Рис.43. Выход равномерного кодера (Signed integer)

 

Процедуру квантования можно реализовать в MATLAB с помощью m-функции quantiz():

[index,quants,distor] = quantiz(sig,partition,codebook)

При этом входными данными являются – вектор данных sig, вектор границ интервалов partition и вектор кодовой таблицы codebook, а выходными данными являются – вектор индексов index, вектор значений квантованного сигнала quants, средний квадрат ошибки distor(скаляр).

Варианты синтаксиса той же функции:

index = quantiz(sig,partition)

[index,quants] = quantiz(sig,partition,codebook)

В Simulink аналогом функции quantiz является блок Sampled Quantizer Encode. Особенность этого блока – элементы вектора входных данных должны подаваться на его вход одновременно (в смысле модельного времени). Проще всего это реализовать, импортируя данные из рабочего пространства MATLAB с помощью блока From Workspace. Другая особенность – в качестве ошибки квантования выдается не скаляр, а вектор квадратов ошибки для каждого из отсчетов. Выходные данные, как и входные, поступают не по мере их формирования в модельном времени, а сразу, в виде векторов. Поэтому анализировать такие данные с помощью блока Scope невозможно, и приходится прибегать к экспорту данных в рабочее пространство MATLAB с помощью блоков To Workspace.

Блок Uniform Encoder, в отличие от блока Sampled Quantizer Encode, обеспечивает только равномерное квантование и может работать с последовательно поступающими на его вход отсчетами сигнала. Параметры настройки блока Uniform Encoder– числа V и B, где V – максимальная амплитудасигнала; B – количество бит, которым представляются отсчеты квантованного сигнала. Количество уровней квантования при этом равно 2B, т.е. может быть только степенью двойки. На выходе блока наблюдается единственный параметр – массив целых положительных (как вариант – массив целых со знаком) чисел, выдаваемых в модельном времени, так что выходной сигнал может быть просмотрен с помощью блока Scope (осциллоскоп).

Блок Quantizer реализует только равномерное квантование. Единственным параметром настройки блока является интервал квантования. Как следствие, число уровней квантования произвольно и зависит от соотношения максимального значения сигнала и интервала квантования.

И в заключение несколько слов о названиях блоков. Ни один из блоков «кодирования», т.е. в названии которых содержится слово Encoder, не осуществляет кодирование в том смысле, что не преобразует массив целых десятеричных чисел в массив целых двоичных чисел. Слово Encoder означает лишь, что такое преобразование, при желании, может быть легко выполнено.

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 248.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...