Линейная или многофазная КИХ-интерполяция
Система dsp.Interpolator
object™ интерполирует значения между входными выборками с действительным знаком с помощью линейной или многофазной КИХ-интерполяции. Задайте который значения интерполировать путем обеспечения вектора точек интерполяции. Точка интерполяции 1 относится к первой выборке во входе. Чтобы интерполировать значение на полпути между второй и третьей выборкой во входе, задайте точку интерполяции 2,5. Точки интерполяции, которые не являются в допустимой области значений, заменяются самым близким значением в допустимой области значений.
Интерполировать входной сигнал с действительным знаком:
Создайте объект dsp.Interpolator
и установите его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
interp = dsp.Interpolator
interp = dsp.Interpolator(Name,Value)
создает Системный объект интерполяции, interp
= dsp.Interpolatorinterp
, чтобы интерполировать значения между входными выборками с действительным знаком с помощью линейной интерполяции.
создает Системный объект интерполяции, interp
= dsp.Interpolator(Name,Value
)interp
, с каждым заданным набором свойств к заданному значению. Заключите каждое имя свойства в одинарные кавычки.
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release
разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).
InterpolationPointsSource
— Источник точек интерполяции'Property'
(значение по умолчанию) | 'Input port'
Метод, чтобы задать точки интерполяции, заданные как одно из следующего:
Свойство
Задайте точки интерполяции через свойство InterpolationPoints.
'Input port'
— Передайте точки интерполяции как вход к алгоритму Системного объекта.
InterpolationPoints
— Точки интерполяции[1.1;4.8;2.67;1.6;3.2]
(значение по умолчанию) | вектор | матрица | N-D массивТочки интерполяции, заданные как вектор, матрица или N-D массив. Допустимая область значений значений в векторе интерполяции от 1 до количества выборок в каждом канале входа. Если вы задаете точки интерполяции вне допустимой области значений, объект отсекает точку к самой близкой точке в допустимой области значений. Например, если входом является [2;3.1;-2.1]
, допустимая область значений точек интерполяции от 1
до 3
. Если вы задаете вектор [-1;1.5;2;2.5;3;3.5]
точек интерполяции, объект интерполятора отсекает -1
к 1
и 3.5
к 3
. Это усечение приводит к точкам интерполяции [1 1.5 2 2.5 3 3]
.
Для получения дополнительной информации на размерности массива точек интерполяции и как это влияет на размерность вывода, см. таблицы в ipts входе Системного объекта.
Настраиваемый: да
Это свойство применяется только, когда вы устанавливаете свойство InterpolationPointsSource на 'Property'
.
Method
— Метод интерполяции'Linear'
(значение по умолчанию) | 'FIR'
Метод интерполяции, заданный как одно из следующего:
'Linear'
– Объект интерполирует значения данных путем предположения, что данные отличаются линейно между выборками, взятыми в смежных шагах расчета.
'FIR'
– Объект использует многофазную интерполяцию, чтобы заменить фильтрацию (свертка) на сверхдискретизированном уровне с серией сверток на более низком уровне. Если вход имеет недостаточные выборки с низкой ставкой, чтобы выполнить КИХ-интерполяцию, объект интерполятора выполняет линейную интерполяцию. Для получения дополнительной информации смотрите свойство FilterHalfLength.
FilterHalfLength
— Поясной из фильтра интерполяции3
(значение по умолчанию) | целочисленный скаляр, больше, чем 0Для фильтра, поясного из P, многофазные КИХ-подфильтры имеют длину 2P. КИХ-интерполяция всегда требует 2P выборки с низкой ставкой для каждой точки интерполяции.
Если точка интерполяции не соответствует выборке с низкой ставкой, КИХ-интерполяция требует P выборки с низкой ставкой ниже и P выборки с низкой ставкой выше точки интерполяции.
Если точка интерполяции соответствует выборке с низкой ставкой, 2P-демонстрационное требование включает выборку с низкой ставкой.
Если вход имеет меньше, чем 2P, граничащий с выборками с низкой ставкой, объект интерполятора использует линейную интерполяцию.
Например, для входа [1 4 1 4 1 4 1 4]
, сверхдискретизировавшего фактором 4 результатов в равномерно распределенных точках интерполяции, InterP = [1:0.25:8]
. Точками InterP(9:12)
является [3.0 3.25 3.5 3.75]
. Если вы устанавливаете FilterHalfLength
на 2, интерполирование в этих точках использует 4 выборки с низкой ставкой от входа с индексами (2,3,4,5)
. Если вы устанавливаете FilterHalfLength
на 4, объект интерполятора использует линейную интерполяцию, потому что вход не имеет достаточных выборок с низкой ставкой, чтобы выполнить КИХ-интерполяцию.
Чем дольше свойство FilterHalfLength
, тем лучше качество интерполяции. Однако увеличение фильтра поясное время вычисления увеличений и требует большего количества выборок с низкой ставкой ниже и выше точки интерполяции. В целом установка свойства FilterHalfLength
между 4 и 6 обеспечивает довольно точную интерполяцию.
Это свойство применяется только, когда вы устанавливаете свойство Method на 'FIR'
.
InterpolationPointsPerSample
— Повышающая дискретизация фактора3
(значение по умолчанию) | целочисленный скаляр, больше, чем 0Повышающая дискретизация фактора, заданного как целочисленный скаляр, больше, чем 0. Фактор повышающей дискретизации L вставляет L – 1 нуль между выборками с низкой ставкой. Результаты интерполяции фильтрации сверхдискретизированной последовательности с lowpass реконструкционным фильтром. Объект интерполятора использует многофазную КИХ-реализацию с подфильтрами InterpolationPointsPerSample
длины 2P, где P является значением, вы задаете в свойстве FilterHalfLength. Для nL выборки с низкой ставкой в сверхдискретизированном входе, где n=1,2,..., объект интерполятора использует точно один из подфильтров InterpolationPointsPerSample
, чтобы интерполировать в точках nL+i/L, где i = 0, 1, 2, …, L – 1.
Если вы задаете точки интерполяции, которые не соответствуют многофазному подфильтру, объект округляет точку в меньшую сторону до самой близкой точки интерполяции, сопоставленной с многофазным подфильтром. Предположим, что вы устанавливаете свойство InterpolationPointsPerSample
на 4 и интерполируете в точках [3 3.2 3.4 3.6 3.8]
. Объект интерполятора использует первый многофазный подфильтр для точек [3.0 3.2]
, второй подфильтр для точки 3.4
, третий подфильтр для точки 3.6
и четвертый подфильтр для точки 3.8
.
Это свойство применяется только, когда вы устанавливаете свойство Method на 'FIR'
.
Bandwidth
— Normalized0.5
(значение по умолчанию) | действительный скаляр, больше, чем 0 и меньше чем или равный 1Пропускная способность, к которой должны быть ограничены интерполированные выходные выборки, задала как действительный скаляр, больше, чем 0 и меньше чем или равный 1. Значение 1 равняется частоте Найквиста или половине частоты дискретизации, Fs. Используйте это свойство использовать в своих интересах bandlimited содержимое частоты входа. Например, если входной сигнал не имеет содержимого частоты выше Fs/4, можно задать значение 0,5 для свойства Bandwidth
.
Это свойство применяется только, когда вы устанавливаете свойство Method на 'FIR'
.
Для версий ранее, чем R2016b, используйте функцию step
, чтобы запустить алгоритм Системного объекта. Аргументы к step
являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.
Например, y = step(obj,x)
и y = obj(x)
выполняют эквивалентные операции.
interpOut = interp(input)
interpOut = interp(input,ipts)
выводит интерполированную последовательность, interpOut
= interp(input
)interpOut
, входного вектора или матричного input, как задано в свойстве InterpolationPoints. Каждый столбец input
обработан как независимый канал входа.
выводит интерполированную последовательность, как задано interpOut
= interp(input
,ipts
)ipts
.
Чтобы задать точки интерполяции, установите свойство InterpolationPointsSource на 'Input port'
.
t = 0:.0001:.0511; x = sin(2*pi*20*t); x1 = x(1:50:end); ipts = 1:0.1:length(x1); interp = dsp.Interpolator('InterpolationPointsSource','Input port'); interpOut = interp(x1',ipts');
входной параметр
Ввод данныхВведите, который интерполирован объектом, заданным как вектор, матрица или N-D массив.
Пример: t = 0:0.0001:0.0511; введите = sin (2*pi*20*t);
Типы данных: single | double
ipts
— Точки интерполяцииМассив интерполяции I Pts, заданный как вектор, матрица или N-D массив. Массив интерполяции представляет моменты времени, в которых можно интерполировать значения входного сигнала. Запись 1 в I, который Pts отсылает к первой выборке входа, записи 2,5, относится к выборке на полпути между второй и третьей входной выборкой и так далее. В большинстве случаев, когда I, Pts является вектором, это может иметь любую длину.
Допустимые значения в массиве интерполяции I Pts колеблются от 1 до количества выборок в каждом канале входа. Например, учитывая длину 5 входных векторов D
, все записи I Pts должен колебаться от 1 до 5. Pts I не может содержать записи такой как 7 или –9, потому что D
не имеет седьмой или девятой записи.
Алгоритм заменяет любые значения из области значений в I Pts с самым близким значением в допустимой области значений (от 1 до количества входных выборок). Затем это выполняет интерполяцию с помощью отсеченной версии I Pts.
Рассмотрите следующий вектор входных данных и точек интерполяции:
D = [11 22 33 44]'
IPts = [10 2.6 -3]'
Поскольку D
имеет четыре выборки, допустимый диапазон точек интерполяции от 1 до 4. Алгоритм отсекает точку интерполяции 10 вниз к к 4 и точка-3 до 1. Результатом является отсеченный вектор интерполяции IPtsClipped = [4 2.6 1]'
.
В зависимости от размерности входа и размерности I Pts, алгоритм применяет I Pts к входу одним из следующих способов:
Если IPts является массивом, объект применяет IPts через первую размерность N-D массив, приводящий к N-D массив вывод.
Если IPts является вектором, объект применяет IPts к каждому входному вектору (как будто входной вектор был одним каналом), приводя к векторному выводу с той же ориентацией как вход (строка или столбец).
Следующие таблицы подводят итог, как объект применяет массив интерполяции IPts ко всем возможным типам входных параметров. Таблица также показывает получившиеся выходные размерности.
Эта таблица описывает поведение, когда InterpolationPointsSource
установлен в 'Property'
.
Введите размерности | Допустимые размерности массива интерполяции I Pts | Как объект применяет I Pts, чтобы ввести | Выведите размерности |
---|---|---|---|
M-by-N-by-K матрица |
P-by-1 столбец |
Применяет I Pts к первой размерности входа |
P-by-N-by-K массив |
P-by-N-by-K матрица |
Применяет каждый элемент столбца IPts к соответствующему столбцу входной матрицы |
P-by-N-by-K массив | |
M-by-N матрица |
1 N строкой |
Применяет каждый элемент столбца IPts к соответствующему столбцу входной матрицы |
1 N строкой |
P-by-1 столбец |
Применяет I Pts к каждому входному столбцу |
P-by-N матрица | |
P-by-N матрица |
Применяет столбцы I Pts к соответствующим столбцам входной матрицы | ||
M-by-1 столбец |
1 P строкой (алгоритм обрабатывает I Pts как столбец), |
Применяет I Pts к входному столбцу |
P-by-1 столбец |
P-by-1 столбец | |||
1 N строкой (не рекомендуемый) |
1 N строкой |
Не применяется. Объект копирует входной вектор. |
1 N строкой, копией входного вектора |
P-by-1 столбец |
P-by-N матрица, где каждая строка является копией входного вектора | ||
P-by-N матрица |
Эта таблица описывает поведение, когда InterpolationPointsSource
установлен в 'Input port'
.
Введите размерности | Допустимые размерности массива интерполяции I Pts | Как объект применяет I Pts, чтобы ввести | Выведите размерности |
---|---|---|---|
M-by-N-by-K матрица | Вектор-столбец длины P |
Применяет I Pts к первой размерности входа |
P-by-N-by-K массив |
P-by-N-by-K матрица |
Применяет каждый элемент столбца I Pts к соответствующему столбцу входной матрицы |
P-by-N-by-K массив | |
M-by-N матрица |
1 N строкой |
Применяет каждый элемент столбца I Pts к соответствующему столбцу входной матрицы |
1 N строкой |
P-by-1 столбец |
Применяет I Pts к каждому входному столбцу |
P-by-N матрица | |
P-by-N матрица |
Применяет столбцы I Pts к соответствующим столбцам входной матрицы | ||
M-by-1 столбец |
1 P строкой |
Применяет I Pts к входному столбцу |
P-by-1 столбец |
P-by-1 столбец | |||
1 N строкой (не рекомендуемый) |
1 N строкой |
Не применяется. Объект копирует входной вектор. |
1 N строкой, копией входного вектора |
P-by-1 столбец |
P-by-N матрица, где каждая строка является копией входного вектора | ||
P-by-N матрица |
Пример: ipts = [1:10];
Типы данных: single | double
interpOut
— Интерполированная последовательностьИнтерполированная последовательность, возвращенная как вектор, матрица или N-D массив. Размерность вывода зависит от размерностей входа и массива точек интерполяции. Для получения дополнительной информации на размерностях, см. таблицы в ipts.
Типы данных: single | double
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
Примечание: Если вы используете R2016a или ранее, заменяете каждый вызов объекта с эквивалентным синтаксисом шага. Например, obj(x)
становится step(obj,x)
.
x = [1 4]; x = repmat(x,1,4); x1 = 1:0.25:8; firInterp = dsp.Interpolator('Method','FIR','FilterHalfLength',2,... 'InterpolationPoints',x1','InterpolationPointsPerSample',4); linInterp = dsp.Interpolator('InterpolationPoints',x1'); OutFIR = firInterp(x'); OutLin = linInterp(x'); stem(OutFIR,'b-.','linewidth',2); hold on; stem(OutLin,'r','markerfacecolor',[1 0 0]); axis([0 30 0 5]); legend('FIR','Linear','Location','Northeast');
Точки интерполяции в индексах 1 - 5 и 25 - 29 не имеют достаточных выборок с низкой ставкой, окружающих их, чтобы использовать КИХ-интерполяцию с заданной длиной фильтра. Поэтому объект интерполятора использует линейную интерполяцию вместо этого.
Примечание: Если вы используете R2016a или ранее, заменяете каждый вызов объекта с эквивалентным синтаксисом шага. Например, obj(x)
становится step(obj,x)
.
t = 0:.0001:.0511; x = sin(2*pi*20*t); x1 = x(1:50:end); I = 1:0.1:length(x1); interp = dsp.Interpolator('InterpolationPointsSource',... 'Input port'); y = interp(x1',I'); stem(I',y, 'r'); title('Original and Interpolated Signal'); hold on; stem(x1, 'Linewidth', 2); legend('Interpolated','Original');
Примечание: Если вы используете R2016a или ранее, заменяете каждый вызов объекта с эквивалентным синтаксисом шага. Например, obj(x)
становится step(obj,x)
.
Интерполируйте сумму синусоид с КИХ-интерполяцией, и с 'Входным портом' как источник точек интерполяции.
Fs = 1000; t = 0:(1/Fs):0.1-(1/Fs); x = cos(2*pi*50*t)+0.5*sin(2*pi*100*t); x1 = x(1:4:end); I = 1:(1/4):length(x1); interp = dsp.Interpolator('Method','FIR',... 'FilterHalfLength',3,'InterpolationPointsSource','Input Port'); y = interp(x1',I'); stem(I,y,'r'); hold on; axis([0 25 -2 2]); stem(x1,'b','linewidth',2); legend('Interpolated Signal','Original',... 'Location','Northeast');
Примечание: Если вы используете R2016a или ранее, заменяете каждый вызов объекта с эквивалентным синтаксисом step
. Например, obj(x)
становится step(obj,x)
.
Объект dsp.Interpolator
с набором свойств Method
к моделям 'FIR'
многофазный КИХ-Интерполятор. Многофазная реализация разделяет lowpass КИХ-импульсный ответ фильтра в несколько подфильтров. Каждый подфильтр занимает определенный узкий диапазон частот. Этот пример показывает, как определить многофазные подфильтры.
Фактор повышающей дискретизации значения по умолчанию и значение по умолчанию, многофазное поясной, равняются 3. Используя эти значения, разработайте линейный фильтр фазы FIR при помощи функции intfilt
. Возвращенный фильтр имеет длину 2 * P * L-1, где P является фактором повышающей дискретизации, и L является фильтром половина длины.
interp = dsp.Interpolator('Method','FIR'); L = interp.InterpolationPointsPerSample; P = interp.FilterHalfLength; FiltCoeffs = intfilt(L,P,interp.Bandwidth); FiltLen=length(FiltCoeffs); FiltCols = ceil(FiltLen/2/L);
Фильтру нужно 2*P*L коэффициенты. Предварительно ожидая нуль не влияет на значение фильтра.
FiltCoeffs = [zeros(FiltCols*2*L-FiltLen,1); FiltCoeffs(:)];
Каждый столбец PolyPhaseCoeffs
является многофазным подфильтром.
PolyPhaseCoeffs = reshape(FiltCoeffs,FiltCols,2*L)';
В режиме линейной интерполяции алгоритм интерполирует значения данных путем предположения, что данные отличаются линейно между выборками, взятыми в смежных шагах расчета.
Предположим, что входным сигналом является D = [1 2 1.5 3 0.25]'
. Левый график показывает выборки в D
, и правильный график показывает линейно интерполированные значения между выборками в D
.
Когда точки интерполяции вне области значений, алгоритм отсекает недопустимые точки интерполяции. Рассмотрите входной сигнал, D = [1 2 1.5 3 0.25]'
, и вектор интерполяции, IPts = [-4 2.7 4.3 10]'
. Интерполированный вывод дан [1 1.65 2.175 0.25]'
.
В КИХ-режиме интерполяции алгоритм интерполирует значения данных с помощью КИХ-фильтра интерполяции. КИХ-фильтр реализован с помощью многофазной структуры. Многофазная реализация разделяет lowpass КИХ-импульсный ответ фильтра во многие различные подфильтры.
Позвольте L представлять количество точек интерполяции на выборку или фактор повышающей дискретизации. Позвольте P представлять половину длины многофазных подфильтров. Индексируя от нуля, если h(n) является импульсным ответом КИХ-фильтра, k th подфильтр:
Таблица описывает разложение КИХ-фильтра с 18 коэффициентами в 3 многофазных подфильтра длины 6, значения по умолчанию для КИХ-объекта интерполятора.
Коэффициенты | Многофазный подфильтр |
---|---|
h(0),h(3),h(6), ..., h(15) | h0(n) |
h(1),h(4),h(7), ..., h(16) | h1(n) |
h(2),h(5),h(8), ..., h(17) | h2(n) |
Фактор повышающей дискретизации L вставляет L – 1 нуль между выборками с низкой ставкой. Результаты интерполяции фильтрации сверхдискретизированной последовательности с lowpass реконструкционным фильтром.
Указания и ограничения по применению:
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
dsp.CICCompensationInterpolator
| dsp.CICInterpolator
| dsp.FIRHalfbandInterpolator
| dsp.FIRInterpolator
| dsp.IIRHalfbandInterpolator
| dsp.VariableFractionalDelay
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.