Сергиенко А.Б. Цифровая обработка сигналов (2002) (1095939), страница 76
Текст из файла (страница 76)
Свойства объектов доступны также через синтаксис обращения к полялт структуры: )тд.паве - ча1це, Ж присваивание значениЯ ча1це - )тд.папе: Ж считывание значениЯ Конструктор объекта может вызываться с параметрами, задающими значения свойств сразу же при создании объекта. Подробнее речь об этом пойдет при описании конкретных функций н объектов. ЗАМЕЧАНИЕ Имена свойств нечувствительны к регистру символов, Более того, нри обращении к ним можно использовать лишь несколько начальных символов имени — необходимо только, чтобы этот нечэльньш фрагмент однозначно идентифицировал свойство. Так, обратиться к свойству ьаваот!вет)Соей!с!сптэ объекта квантованного фнльтра можно, указав строку 'двапг!вст)сое!Бс!елтз' нлн всего одну букву 'Ч' (других свойств на эту букву данный обьснт не имеет). После создания объекта и настройки его свойств объект можно использовать, указывая его в качестве параметров различных функций.
Например, для выполнения обработки сигнала квантованным фильтром уже знакомая нам функция )11Сег используется следующим образом: у = й 1сег!!тт). х) Как видите, вместо двух векторов коэффициентов в списке параметров фигурирует объект квантованного фильтра, В пакете г!)пег Рез!йп имеется множество функций, предназначенных для работы с объектами. Некоторые из них просто позволятот получать значения отдельных свойств более удобным путелт, чем с помощью функции дед другие производят более специфические действия. Например, с помощью функции дгерогс можно получить статистическую информацию, накопленную объектом, — число выполненных операций, количество возникших переполнений и т. п.
Далее перейдем к рассмотрению конкретных функций и объектов. Квантователи Для создания объекта квантователя служит функция дцалтт пег. У данного объекта немного свойств, причем числовым является только одно нз них, а все строковые свойства иметот уникальпыс значения. Это позволяет вызывать конструктор объекта, указывая только значения свойств и опуская их имена; д = дцалйттвег(ча)це!.
ча1ие2....) При атом не обязательно перечислять значения всех свойств — те из них, которые не заданы при вызове функции, сохранят значения, принятые по умолчанию. 401 Функции пакета расширения Нйег Пев(дп Разумеется, возможеи и полный вариант вызова, когда указываются и имена, и значения свойств: о = ПиэпСыег('паае1'. та1ие1. 'паае2', ча1ие2....) Здесь 'паае1', 'паае2' и т. я. — имена свойств, а та1 ие1, ча1 ие2 и т. л. — соответствующие значения, Список свойств кваитоваииого фильтра приведен в табл. 7.3, Как уже говорилось, считывать и задавать значения этих свойств можно с помощью функций деС и зеС соответственно. Таблица 7.3.
Свойства объекта квантоватепя юго (иекваитовапиого) сигнала, боты кваитоватсля (только лля чтения) ого (нсквапто боты кваитова 'оооо)е' — кваитоватсль с плавающей занятой, стандартный 64-битовый формат ооио)е. Все остальные параметры в ванном случае игнорируются; 'т1оаС' — кваитоватсль с плавающей запятой; 'Йхео' — кваптоватсль с фпксироваипой запятой (этот вариант принят по умолчанию); атель с плавающей запятой, стандартный х(пд1е, Все остальные параметры норируются; овый кваптователь с фиксированной запятой сппых операций квантования (только Лля чтения) й, зафиксированное за время работы кваптоватсля ри значимости (когпа ненулевой входной сигнал ваиия округляегся до пуля; используется также лпеиись), зафиксированное за время работы 1 о для чтения) ~е вверх; 'сопчегдепС' — округление к ближайшему целому значению, в случае равенства расстояний выбирается четное значение; ' г(х' — округление к нулю; '(1оог' — округление вниз (зтот вариант принят по умолчанию); ~ ' гоипй' — округление к ближайшему целому значению, в случае ! равенства расстояний выбираешься зпачсппс, большее по людулю Продолжение р 402 Глава 7.
Эффекты квантования в цифровых системах Таблица 7.3 (продолжение) Имя свойстве Описвние Реакция на переполнение (только для формата с фиксированной запятой): 'засогасе' — при переполнении происходит насыщение (зтот варкапт принят по умолчанию); 'ыгар' — при переполнения игнорируются «лищпне» старщие разряды бчег() счлсбе Двухэлементный вектор, первый элемент которого задает общее число двоичных разрядов, используемое для представления кпаптованных чисел. Второй элемент вектора для квантоеателей с фиксированной запятой (Мобе '71хеб' илв 'пт1хеб') указывает число разрядов дробной части,а для квантователей с плавающей запятой (Мобе '7)озс') — число разрядов, используемое для представления порядка.
Значение по умолчанию равно (16 15) Есгвэ( Значения свойств Мах, М1 и, Морегас1опз, Мочегг1сыз и Мопбегг) оыз, предоставляюп(их статистическую информацию и доступных только для чтения, обновляются при каждом выполнении операции квантования (функция йиапх1хе, см. далее) и об- нуляются при выполнении функции гезеС.
Операция квантования выполняется с помошью функции соап11ге. Синтаксис ее вызова следуюший: у = цпапС1ге(ц, х) [у), у2, ..З = сперт)ге(ц, х!. х2., ) Здесь у1 — результат квантования х1, у2 — результат квантования х2 н т. д. Как отмечалось в разделе «Формат с фиксированной запятой», диапазон пред- ставимых в таком формате чисел является несимметричным.
В частности, если целая часть содержит единственный знаковый разряд, оказывается невозмож- ным точно представить значение +1. Для решения этой проблемы в пакете Р!!(ег !)ез(йп имеются функция пп1ГйпапГ1хе и объект ип1ГйпапГ1гег. Функция пп1гйпзпг1хе вызывается точно так же, как и функция йпапг1ге: у - пп11спапГ(те((). х) (у!. У2. З = ип(Гсаап117е(ц, х1, х2, .) Работа этой функции отличается от функции йпапГ1ге лишь в одном аспекте: зна- чения, близкие к единице (точнее, отстоящие от нее не более чем на ерз, где ерз— точность представления чисел в квантователе, см. далее), при квантовании ста- новятся равными единице.
Здесь с — объект квантователя, а х — массив значений входного сигнала Резуль- татом работы является массив квантованных значений у. Размеры массивов х и у одинаковы. Можно вызывать функцию йпапГ1ге для квантования нескольких переменных одновременно: 403 Функции пакета расширения г)нег Юеэ)дп Чтобы пояснить разницу между функциями ццап11ге и цп1тцвапс1зе, приведем простой пример. Создадим квантователь с фиксированной запятой, использующий один разряд для целой части н 7 — для дробной: » ц = циап1~гег1'т)хес', (8 7]): Теперь произведем квантование единичного значения с ломошью данного кван- тователя и функций ццапс1зе и ип11циап11хе: цоап11ге(ц. 1) у)агп)пд: 1 оуег()он. > 1п .,оез1дп)циап11гат)оп~9циэп11гег)циап11ге и ас ))пе 88 апэ = 0.9922 » ип11цпапс)ге(ц. 1) дп5 1 При использовании функции ццап11ге было выдано предупреждение о произошедшем переполнении '(строка с длинным путем к М-файлу функции ццап11ге в приведенном листинге сокрашена), а квантовапное значение оказалось меньше единицы (оно равно максимальному числу, представимому в используемом нами формате 1.7).
При использовании же функции цп11ццап11зе переполнения не происходит, а результат квантования оказывается равен единице. Той же цели — обеспечению точного представления единичных значений — служит и объект пп1тццапс1зег, Он полностью аналогичен объекту циап11 зег, но для него не нужно явно вызывать функцию цп1тццапт1ге — это будет сделано автоматически при обычном квантовании. ВНИМАНИЕ Персчислспныс трюки с квантованием единичных значений становятся возможны исключительно благодаря тому, что МАТ1.АВ использует для представления всех дробных чисел (как пскваптовапных, тэк н квантовапных) формат с плавающей запятой оовЫе. При реализации алгоритмов обработки сигнала кв жслсзек илн па языках высокого уровня с использованием целочисленной арифметики точно представить пспрелставпмые значения, естественно, ве удастся. Зачем же,тогла пакет г 1)гег Рсэ)йп содержит такие средства? Дело в том, что объекты квантователсй предназначены прежде всего лля использования в составе кваптованпых фильтров н БПФ, которые будут рассматриваться далее.
Прн реальной обработке сигналов этими устройствами проблсму с единичными значениями можно обойти, проигнорировав операции умпожсния отсчетов сигнала па коэффициенты, равные единице. В МАТ1.АВ жс при установке режима оатннизацни умножений (свойство Орс1н1хе))п)су6а1пз, см, далее) лля коэффициентов фильтров н БПФ используются квантователн типа цп11цвап11хег, Это позволяет не модифицировать общий алгоритм вычислений. Для иллюстрации сказанного создадим объект нп1тццапт1гег с теми же параметрами, как у квантователя в предыдущем примере, и выполним квантование единичного значения; 404 Глава 7.
Эффекты квантования а цифровых системах » иц = цл11соап11гег('т(хеб'. [8 У]); » спал(тве(цц. 1) апз = 1 1(ак видите, переполнения не произошло, а результат равен единице. Помимо функций цвапттге и ипттцвапгтге с объектами квантователей могут работать следующие функции: Ы ц1 " соруоЬб(ц) — создает независимую копию объекта квантователя с теми же значениями свойств, что у исходного объекта ц; ВНИМАНИЕ Программная реализация обычной онсрацни присваивания объектов в МЛТ1.ЛВ (т)1 - о) сводится к копированию указателя, так что в результате оба идентификатора ссылаются на олий и ту жс область памяти. Функция жс соруоЬ) создает левый объект н копирует в него всс значения свойств оригинала.