exponenta event banner

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: X0}, {X: 0 < X1}, {X: 1 < X3} и {X: 3 < X}.

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

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

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

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

свернуть все

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

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

  • 0 если sig(К) ≤ partition(1)

  • M, если partition(М) < sig(К) ≤ partition(М + 1)

  • N, если partition(N) ≤ sig(K)

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

quants рассчитывается на основе codebook и index входов и задается quants(i) = codebook(index(i) + 1), где i - целое число между 1 и длиной sig.

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

См. также

Функции

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