quantiz

Получите индекс квантования и квантованное выходное значение

Описание

index = quantiz(sig,partition) возвращает уровни квантования входного сигнала sig при помощи скалярного разбиения квантования, заданного во входных partition.

пример

[index,quants] = quantiz(sig,partition,codebook) задает codebook, который предписывает значение для каждого разбиения в скалярном квантовании. codebook - вектор, длина которого должна превышать длину partition по одному. Функция также возвращается quants, который содержит скалярное квантование sig и зависит от уровней квантования и предписанных значений в кодовой книге.

пример

[index,quants,distor] = quantiz(sig,partition,codebook) возвращает оценку среднего квадратного искажения данных квантования.

Примеры

свернуть все

Сгенерируйте выборочные данные.

samp = [-2.4, -1, -0.2, 0, 0.2, 1, 1.2, 2, 2.9, 3, 3.5, 5]
samp = 1×12

   -2.4000   -1.0000   -0.2000         0    0.2000    1.0000    1.2000    2.0000    2.9000    3.0000    3.5000    5.0000

Создайте раздел квантования. Чтобы задать раздел, перечислите различные конечные точки различных областей значений значений.

partition = [0, 1, 3];

Задайте значения кодовой книги.

codebook = [-1, 0.5, 2, 3]; % Codebook length must be equal to the number of partition intervals

Выполните квантование выборочных данных. Отобразите индекс квантования и соответствующее квантованное выходное значение входных данных.

[index,quantized] = quantiz(samp,partition,codebook)
index = 1×12

     0     0     0     0     1     1     2     2     2     2     3     3

quantized = 1×12

   -1.0000   -1.0000   -1.0000   -1.0000    0.5000    0.5000    2.0000    2.0000    2.0000    2.0000    3.0000    3.0000

Сгенерируйте дискретизированную синусоиду.

t = [0:.1:2*pi];
sig = sin(t);

Создайте раздел квантования. Чтобы задать раздел, перечислите различные конечные точки различных областей значений значений.

partition = [-1:.2:1];

Задайте значения кодовой книги.

codebook = [-1.2:.2:1]; % Codebook length must be equal to the number of partition intervals

Выполните квантование на дискретизированной синусоиде.

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

Постройте график квантованной синусоиды и дискретизированной синусоиды.

plot(t,sig,'x',t,quants,'.')
title('Quantization of sine wave')
xlabel('Time')
ylabel('Amplitude')
legend('Original sampled sine wave','Quantized sine wave');
axis([-.2 7 -1.2 1.2])

Figure contains an axes. The axes with title Quantization of sine wave contains 2 objects of type line. These objects represent Original sampled sine wave, Quantized sine wave.

Входные параметры

свернуть все

Входной сигнал, заданный как вектор. Этот вход задает дискретизированный сигнал для этой функции, чтобы выполнить квантование.

Типы данных: double

Различные конечные точки различных областей значений, заданные как вектор-строка. Этот вход задает несколько смежных, непересекающиеся области значений значений в наборе вещественных чисел. Значения, присутствующие в этом входе, должны быть строго в порядке возрастания. Длина этого вектора должна быть на один меньше, чем количество интервалов разбиения.

Пример: [0, 1, 3] делит вектор - строку входа в четыре набора {X: <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0>}, {X: 0 <<reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0>}, {X: 1 <<reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0>} и {X: 3 < X}.

Типы данных: double

Значение квантования для каждого раздела, заданное как вектор-строка. Этот вход предписывает общее значение для каждого разбиения в скалярном квантовании. Длина этого вектора должна равняться количеству интервалов разбиения, то есть длина этого вектора должна превышать длину partition вход единичным.

Типы данных: double

Выходные аргументы

свернуть все

Индекс квантования входного сигнала, возвращаемый как неотрицательный вектор-строка. Этот выход определяет, на каком интервале разбиения, каждое входное значение сопоставлено. Каждый элемент в index - одно из N целых чисел в область значений [0, N -1].

Если на partition вход имеет длину N, index - вектор, K-я запись которого:

  • 0 если sig(<reservedrangesplaceholder1>) ≤ <reservedrangesplaceholder0>(1)

  • M, если partition(<reservedrangesplaceholder1>) <sig(<reservedrangesplaceholder1>) ≤ <reservedrangesplaceholder0>(<reservedrangesplaceholder0>)

  • N, если partition(<reservedrangesplaceholder1>) ≤ <reservedrangesplaceholder0>(K)

Выход квантователя, который содержит значения квантования входного сигнала, возвращается как вектор-строка. Размер quants соответствует стандарту входного параметра sig. Когда codebook не задан как входной параметр, можно задать значения кодовой книги как вектор, длина которого должна превышать длину partition по одному.

quants вычисляется на основе codebook и index входы и задается quants(<reservedrangesplaceholder1>) = codebook(index(i) + 1), где i является целым числом от 1 до длины sig.

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

См. также

Функции

Представлено до R2006a