我有一个连续的信号,我想转换为类似步骤的功能(我不确定正确的术语是什么)
因此,信号下部的每个样本都应该被1,中间的2和高的3替换。我想控制步的大小(在这个例子中是3,但它可以改变)< / p>
我怎样才能用MATLAB做到这一点?提前谢谢。
我尝试了quant
和ordinal
,但我做不到。
答案 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的幂)。
您可能需要此工具箱的特殊许可。