Queries on Quantization input
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(1 个)
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
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
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Cast and Quantize Data 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!