Queries on Quantization input

1 回表示 (過去 30 日間)
Derick Wong
Derick Wong 2013 年 12 月 31 日
編集済み: Derick Wong 2014 年 1 月 1 日
Does anyone understand the input of this code ? does the vect represent a matrix and how do i determine the input for bits?
function [levelNumbers,scaling] = quantization(vect,bits)
%...'levelNumbers' contains the index of the quantization value
%...'scaling' contains 2 values, the lowest quant. value and delta
[M,N] = size(vect);
if (M>1)
vect = vect';
end
range = max(vect)-min(vect);
delta = roundVal(range/2^(bits));
levels = 2^bits;
base = roundVal(min(vect));
%quantValues = [base : delta : roundVal(max(vect)-delta)]' + delta/2;
quantValues = [base : delta : roundVal(max(vect)-delta)]';
inputArray = repmat(vect , length(quantValues), 1 );
quantArray = repmat(quantValues, 1 , length(vect));
quantDiff = abs(inputArray-quantArray);
[Y,I] = min(quantDiff);
quantResults=quantArray(I);
for i=1:length(quantResults)
levelNumbers(i) = find(quantResults(i)==quantValues);
end
scaling = [base, delta];
if length(quantResults)==0
levelNumbers=ones(1,length(vect));
end
function newVal = roundVal(num)
num = num*1e4;
num = round(num);
newVal = num*1e-4;

回答 (1 件)

Walter Roberson
Walter Roberson 2013 年 12 月 31 日
The vect must be a vector, but it can be row order or column order.
The number of bits would be as appropriate for your purposes. 1 bit if you want 2 quantization levels, 2 bits if you want 4 levels, 3 bits if you want 8 levels, and so on.
  3 件のコメント
Walter Roberson
Walter Roberson 2013 年 12 月 31 日
You can reshape() your matrix into a vector before passing it in.
The number of levels you need is not directly related to the matrix; it is based upon your purpose in quantizing. Which you have not happened to mention
Derick Wong
Derick Wong 2014 年 1 月 1 日
編集済み: Derick Wong 2014 年 1 月 1 日
My purpose is to do compression. I had to do a compression by going through DCT(discrete cosine transformation) follow by quantization. I have a matrix of
[x1 x2 x3 x4 ... xm
y1 y2 y3 y4 ... ym
z1 z2 z3 z4 ... zm]
In fact there are n rows as well. Initially I used round() as a form of quantization , but now I need to do a inverse quantization which needed me to use this quantization code and another inverse quantization code.

サインインしてコメントする。

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by