如何在MATLAB中量化信号(到k级)

时间:2014-10-18 21:27:44

标签: matlab signal-processing quantization

我有一个连续的信号,我想转换为类似步骤的功能(我不确定正确的术语是什么)

因此,信号下部的每个样本都应该被1,中间的2和高的3替换。我想控制步的大小(在这个例子中是3,但它可以改变)< / p>

我怎样才能用MATLAB做到这一点?提前谢谢。

P.S。

我尝试了quantordinal,但我做不到。

3 个答案:

答案 0 :(得分:0)

你想要这样的东西吗?

x = randn(1000, 1); % your signal
y = zeros(size(x));
y(x < -1) = 1;
y(x >= -1 & x < 3) = 2;
y(x >= 3) = 3;

您可以使用quantile来获取分位数来确定阈值。

答案 1 :(得分:0)

您可以使用重质功能的组合。我应该提到有时H(x = 0)= 0.5。

x=linspace(-1,5);  % your signal to be quantized---- could be anything
y= a*heaviside(x-x1)  + b*heaviside(x-x2) + c;   
% a, b and c decide the heights of your quantization
%   x1 and x2 decide the levels

如果你想要第四级,只需使用以下

y= a*heaviside(x-x1)  + b*heaviside(x-x2) + c*heaviside(x-x3)  +e;

此功能在此处定义:http://en.wikipedia.org/wiki/Heaviside_step_function

量化为k级

    fun=a
    for k=1:n
       fun = fun+ h(i)*heaviside(x-xi(k))
    end
    fun=fun/normalization   % normalization is a number to decide the level of your signal

答案 2 :(得分:0)

我认为这不是你所要求的,但它可能有一些有用的信息。

Matlab定点工具箱可以处理量化(有限精度)数和算术。输入“help fi”以查看如何使用特定字长,分数长度和签名来声明定点数。这对二进制点缩放特别有用(二进制字中的每个位位置表示2的幂)。

您可能需要此工具箱的特殊许可。