Queries on Quantization input
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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;
0 Kommentare
Antworten (1)
Walter Roberson
am 31 Dez. 2013
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 Kommentare
Walter Roberson
am 31 Dez. 2013
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
Siehe auch
Kategorien
Mehr zu Cast and Quantize Data finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!