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 object. The axes object 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: X0x0 <X1x1 <X3}, и {X: 3 <X}.

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

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

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

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

свернуть все

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

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

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

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

  • N, если partition(N) ≤ sigK)

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

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

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

Смотрите также

Функции

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