Преобразование коэффициентов линейного прогнозирования в линейные спектральные пары или линейные спектральные частоты
Оценка/линейное прогнозирование
dsplp
Блок преобразования LPC в LSF/LSP принимает вектор или матрицу коэффициентов линейного предсказания (LPC) и преобразует его в вектор или матрицу линейных спектральных пар (LSP) или линейных спектральных частот (LSF). При преобразовании LPC в LSF выходные сигналы блока соответствуют выходным сигналам poly2lsf функция.
Входной блок должен быть матрицей, вектором столбца или неориентированным вектором. Каждый канал входа должен иметь не менее двух выборок.
Входные LPC для каждого канала, 1, a1, a2,..., am, должны быть знаменателем передаточной функции стабильного всеполюсного фильтра с формой, заданной в первом уравнении требований к действительным выходам. Входной канал length-M + 1 вырабатывает выходной канал length-M.
См. другие разделы этой справочной страницы, чтобы узнать, как обеспечить получение допустимых выходных данных, как обнаружить недопустимые выходные данные, как блок вычисляет значения LSF/LSP и многое другое.
Для получения допустимых выходных данных входные данные и значение параметра «Корневой поиск грубых точек сетки» должны соответствовать следующим требованиям:
Входные LPC для каждого канала, 1, a1, a2,..., am, должны исходить из знаменателя следующей передаточной функции, H (z), стабильного всеполюсного фильтра (все корни H (z) должны находиться внутри единичной окружности). Обратите внимание, что первый член в знаменателе H (z) должен быть равен 1. Когда входные LPC не поступают от передаточной функции следующего вида, блочные выходы недействительны.
+... + amz − m
Значение параметра «Корневой поиск грубых точек сетки» должно быть достаточно большим, чтобы блок мог найти все значения LSP или LSF. (Выходные LSF и LSP являются корнями полиномов, связанных с входным многочленом LPC; блок ищет эти корни для получения выходных данных. Дополнительные сведения см. в разделе Метод вычисления LSF и LSP: метод полинома Чебышева для поиска корня.) Если не задать точкам грубой сетки Root finding достаточно высокое значение относительно количества LPC, блок может не найти все LSP или LSF и получить недопустимые выходные данные, как описано в разделе Ограничения метода поиска Root: Failure to Find Roots.
Сведения о распознавании недопустимых входов и выходов и параметров для их обработки см. в разделе Обработка и распознавание недопустимых входов и выходов.
Установите для параметра Output одну из следующих настроек, чтобы определить, выводит ли блок LSF или LSP:
LSF in radians (0 pi) - Блок выводит значения LSF между 0 и δ радиан в возрастающем порядке. Блок не выводит гарантированные значения LSF, 0 и δ.
LSF normalized in range (0 0.5) - Блок выводит нормализованные значения LSF в возрастающем порядке, вычисленные делением значений LSF между 0 и δ радиан на 2λ. Блок не выводит гарантированные нормализованные значения LSF, 0 и 0,5.
LSP in range (-1 1) - Блок выводит значения LSP в порядке убывания, равном косинусу значений LSF между 0 и δ радиан. Блок не выводит гарантированные значения LSP, -1 и 1.
Значения n и k определяют время и точность вычисления выходного сигнала блока, где
n - значение параметра Root finding грубых точек сетки (выберите это значение с осторожностью; см. примечание ниже).
k - значение параметра уточнения «Корневой поиск биссекции».
Уменьшение значений n и k уменьшает время вычисления выходного сигнала, но также уменьшает точность выходного сигнала:
Верхняя граница времени вычисления блока пропорциональна 1).
Каждый выход LSP находится в пределах ) от фактического значения LSP.
Каждый выход LSF находится в пределах ΔLSF от фактического значения LSF, LSFact, где
/( n⋅2k)) |
Примечание
Если значение параметра Root finding грубых точек сетки слишком мало по сравнению с количеством LPC, блок может выводить недопустимые данные, как описано в разделе Требования к допустимым выводам. См. также раздел Обработка и распознавание недопустимых входов и выходов.
Чтобы получить действительные выходные данные, входные LPC и значение параметра Root finding jarse grid points должны соответствовать требованиям, описанным в разделе Требования для действительных выходных данных.
Входной канал Length-L + 1 выдает выходной канал Length-L
Выходной параметр определяет тип выходного сигнала (см. раздел Настройка выходных сигналов для LSF или LSP):
LSF - частоты, wk, где 0 < wk < δ и wk < wk + 1
Нормализованные LSF - wk/2δ
LSP - cos (wk)
Блок выводит недопустимые данные, если входные LPC и значение параметра Root finding грубых точек сетки не соответствуют требованиям, описанным в разделе Требования к допустимым выводам. В следующих разделах описывается, как выглядят недопустимые выходные сигналы и как задать параметры блока, предоставляемые для обработки недопустимых входных и выходных сигналов:
Каналы недопустимого вывода имеют те же размеры, размеры и статусы кадра, что и каналы допустимого вывода. Однако недопустимые выходные каналы не содержат всех значений LSP или LSF. Вместо этого они не содержат или содержат некоторые из значений LSP и LSF, и остальная часть выходных данных заполняется значениями держателя места (-1, 0,5 или δ) в зависимости от настройки параметра Output).
Короче говоря, все недопустимые выходы в канале заканчиваются в одном из значений фиксатора места (-1, 0,5 или δ), как показано в следующей таблице. Сведения об использовании параметров блока для обработки недопустимых входов и выходов см. в следующем разделе.
| Установка выходного параметра | Держатель места | Пример недопустимых выходных данных |
|---|---|---|
| π | |
|
| |
|
| − 1 − 1] |
Необходимо задать, как блок обрабатывает недопустимые входы и выходы, установив следующие параметры:
Show output validity status (1 = valid, 0 = invalid) - установите этот параметр для активации второго выходного порта, который выводит вектор с одним логическим элементом на канал;1 когда выходной сигнал соответствующего канала является действительным, и 0 при недопустимом выводе. Выходы LSF и LSP недопустимы, когда блок не может найти все значения LSF или LSP или когда входные LPC нестабильны (подробнее см. в разделе Требования к допустимым выходам). См. предыдущий раздел, чтобы узнать, как распознать недопустимые выходные данные.
Если текущий вывод недопустим, перезаписать предыдущим выводом - установите этот флажок, чтобы блок перезаписал недействительные выходы предыдущим выводом. При установке этого параметра также необходимо учитывать следующие параметры:
Если первый вывод недействителен, перезаписать пользовательскими значениями - когда первый ввод нестабильен, можно перезаписать недействительный первый вывод либо
Значения по умолчанию, сняв этот флажок
Значения, которые вы указываете, установив этот флажок
Начальными значениями перезаписи по умолчанию являются представления LSF или LSP фильтра всех частот. Вектор, используемый для перезаписи недопустимых выходных данных, сохраняется как внутреннее состояние.
Пользовательские значения LSP/LSF для перезаписи недопустимых первых выходных данных - укажите вектор значений для перезаписи недопустимых первых выходных данных, если выбран параметр Когда первые выходные данные недопустимы, перезаписать пользовательскими значениями. Для многоканальных входов предоставить матрицу с тем же количеством каналов, что и вход, или с одним вектором, который будет применен к каждому каналу. Вектор или матрица указанных значений LSP/LSF должны иметь те же размеры, размер и состояние кадра, что и другие выходы.
Если первое входное значение не равно 1 - блочный выход в любом канале недействителен, когда первый коэффициент в векторе LPC не равен 1; этот параметр определяет, что делает блок при наличии таких входных данных:
Ignore - Продолжайте вычисления так, как если бы первый коэффициент был равен 1.
Normalize - Делите входные ЛПК на значение первого коэффициента перед вычислением выходного сигнала.
Normalize and warn - В дополнение к Normalizeв командной строке MATLAB ® появится предупреждающее сообщение.
Error - Остановите моделирование и выведите сообщение об ошибке в командной строке MATLAB.
Указывает, следует ли преобразовывать входные коэффициенты полинома линейного прогнозирования (LPC) в LSP in range
(-1 1), LSF in radians (0 pi), или LSF normalized in range (0 0.5). Описание трех параметров приведено в разделе Настройка выходов для LSF или LSP.
Значение n, где блок делит интервал (-1, 1) на n субинтервалов равной длины и ищет корни (значения LSP) в каждом субинтервале. Необходимо выбрать n достаточно больших значений, или вывод блока может быть недопустимым, как описано в разделе Требования к допустимым выводам. Сведения о том, как блок использует этот параметр для вычисления выходных данных, см. в разделе Метод вычисления LSF и LSP: метод полинома Чебышева для поиска корня. См. также раздел Настройка времени и точности вычисления выходных данных с помощью параметров поиска корня. Настраиваемый (Simulink).
Значение k, где каждый выход LSP находится в пределах ) от фактического значения LSP, где n - значение параметра «Корневой поиск грубых точек сетки». Сведения о том, как блок использует этот параметр для вычисления выходных данных, см. в разделе Метод вычисления LSF и LSP: метод полинома Чебышева для поиска корня. См. также раздел Настройка времени и точности вычисления выходных данных с помощью параметров поиска корня. Настраиваемый (Simulink).
Установите этот параметр для активизации второго выходного порта, который выводит вектор с одним логическим элементом на канал; 1 когда выходной сигнал соответствующего канала является действительным, и 0 при недопустимом выводе. Выходы LSF и LSP недопустимы, когда блок не может найти все значения LSF или LSP или когда входные LPC нестабильны (подробнее см. в разделе Требования к допустимым выходам).
Установка этого флажка приводит к тому, что блок перезаписывает недействительные выходные данные предыдущими выходными данными. Установка этого параметра активирует другие параметры для контроля начальных значений перезаписи (когда самый первый вывод блока недействителен). Дополнительные сведения см. в разделе Параметры обработки недопустимых входов и выходов.
При нестабильном первом входе можно перезаписать недействительный первый выход одним из следующих:
Значения по умолчанию, сняв этот флажок
Значения, которые вы указываете, установив этот флажок
Начальными значениями перезаписи по умолчанию являются представления LSF или LSP фильтра всех частот. Вектор, используемый для перезаписи недопустимых выходных данных, сохраняется как внутреннее состояние. Дополнительные сведения см. в разделе Параметры обработки недопустимых входов и выходов.
Укажите вектор значений для перезаписи недопустимого первого вывода, если выбран параметр Когда первый вывод недействителен, перезаписайте пользовательскими значениями. Для многоканальных входов предоставить матрицу с тем же количеством каналов, что и вход, или с одним вектором, который будет применен к каждому каналу. Вектор или матрица указанных значений LSP/LSF должны иметь те же размеры, размер и состояние кадра, что и другие выходы.
Определяет действия блока при отсутствии первого коэффициента ввода 1. Блок может либо продолжать вычисления, как когда первый коэффициент равен 1 (Ignore); делить входные ЛПК на значение первого коэффициента перед вычислением выходного сигнала (Normalize); в дополнение к Normalize, выведите предупреждающее сообщение в командной строке MATLAB (Normalize and warn); остановить моделирование и вывести сообщение об ошибке в командной строке MATLAB (Error). Дополнительные сведения см. в разделе Параметры обработки недопустимых входов и выходов.
Примечание
Сведения о принципах, на которых основаны методы вычисления LSP и LSF блока, см. в разделе Ссылки.
Для вычисления выходов LSP для каждого канала блок опирается на тот факт, что значения LSP являются корнями двух конкретных многочленов, связанных с входным многочленом LPC; блок находит эти корни с помощью метода поиска корня полинома Чебышёва, описанного далее. Для вычисления выходов LSF блок вычисляет косинус дуги LSP, выводя значения в диапазоне от 0 до δ радиан.
LSP, являющиеся корнями двух конкретных многочленов, всегда лежат в диапазоне (-1, 1). (Гарантированные корни в 1 и -1 факторизованы.) Блок находит LSP путем поиска знакового изменения значений двух многочленов между точками в диапазоне (-1, 1). Блок ищет максимум k (n-1) точек, где
n - значение параметра Корневой поиск грубых точек сетки.
k - значение параметра уточнения «Корневой поиск биссекции».
Метод блока для выбора точек для проверки состоит из следующих двух шагов:
Грубый корневой поиск - блок делит интервал [-1, 1] на n интервалов, каждый длиной 2/n, и проверяет знаки значений обоих многочленов в конечных точках интервалов. Блок начинает проверку знаков на 1 и продолжает проверку знаков на 1 - 4/n, 1 - 6/n и так далее на шагах длины 2/n, выводя любую точку, если она является корнем. Блок прекращает поиск в следующих ситуациях:
Блок находит знаковое изменение значений многочлена между двумя соседними точками. Интервал, содержащий изменение знака, гарантированно содержит корень, поэтому блок выполняет дальнейший поиск интервала, как описано в шаге 2, Корневой поиск уточнения.
Блок находит и выводит все M корней (заданная длина - M + 1 LPC вход ).
Блок не может найти все M корней и выдает недопустимые выходы, как описано в разделе Обработка и распознавание недопустимых входов и выходов.
Уточнение поиска корня - когда блок находит изменение знака в интервале [a, b], он ищет корень, гарантированно лежащий в интервале, выполнив следующие шаги:
Проверить, является ли средняя точка корнем - блок проверяет знак средней точки интервала [a, b]. Блок выводит среднюю точку, если это корень, и продолжает шаг 1, поиск грубого корня, в следующей точке, a - 2/n. В противном случае блок выбирает полуинтервал с конечными точками противоположного знака (либо [a, (a + b )/2], либо [(a + b )/2, b]) и выполняет шаг 2b, остановить или продолжить уточнение поиска корня.
Stop or Continue Root Finding Refinement - когда блок повторяет шаг 2a k раз (k - значение параметра уточнения bisection поиска корня), блок линейно интерполирует корень, используя конечные точки полуинтервала, выводит результат как значение LSP и возвращается к шагу 1 Грубый поиск корня. В противном случае блок повторяет этап 2а, используя полуинтервал.
Грубый корневой поиск и уточнение корневого поиска

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

Плавающая точка с двойной точностью
Плавающая точка с одинарной точностью
Boolean - поддерживается только опциональным портом вывода, который появляется при установке параметра, Show output validity status (Показать состояние достоверности вывода) (1 = valid, 0 = invalid)
Kabal, P. и Ramachandran, R. «Вычисление линии спектральные частоты Используя полиномиалы Чебышева. «Сделки IEEE на акустике, речи и обработке сигнала, издание ASSP-34 № 6, декабрь 1986. с. 1419-1426.
| Преобразование LSF/LSP в LPC | Инструментарий системы DSP |
| КНД к/от РО | Инструментарий системы DSP |
| КНД/РО в автокорреляцию | Инструментарий системы DSP |
poly2lsf | Панель инструментов обработки сигналов |