File: softquant.m

package info (click to toggle)
python-dtcwt 0.14.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 8,588 kB
  • sloc: python: 6,287; sh: 29; makefile: 13
file content (30 lines) | stat: -rw-r--r-- 919 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function y = softquant(x,q)
% function y = softquant(x,q)
%
% Soft quantise x, using quantiser thresholds specified by q as follows:
%   q = [qmin  qmax  stepsize];
% As x increases linearly, y will smoothly transition
% between adjacent quantiser steps around the nominal transition point.
%
% Nick Kingsbury, Cambridge University, Nov 2011.

% Quantise x.

% Apply an offset and a scale factor to x so that y goes from zero to 2*pi*ymax
% and the stepsize is 2*pi.
ymax = round((q(2) - q(1))/q(3));  % no. of steps.
y = (x - q(1)) * (1/q(3));
y = (2*pi) * max(min((x - q(1)) * (1/q(3)),ymax),0);

% Apply the non-linear periodic function that is periodic over 2*pi, such
% that it generates smooth steps and has approx zero gradient in between
% the transition regions.
y = y - 1.4*sin(y) + 0.2*sin(2*y);

% Rescale y back to the original range of x and reinsert the offset.
y = y * (q(3)*0.5/pi) + q(1);
return;