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!