【发布时间】:2014-10-18 21:27:43
【问题描述】:
我有一个连续信号,我想将其转换为阶梯函数(我不确定正确的术语是什么)
所以信号下部的每个样本都应该替换为1,中间的2和高的3。并且我想控制步长的大小(在这个例子中是3,但它可以改变)
我怎样才能用 MATLAB 做到这一点?提前致谢。
附言
我尝试了quant 和ordinal,但还是不行。
【问题讨论】:
标签: matlab signal-processing quantization
我有一个连续信号,我想将其转换为阶梯函数(我不确定正确的术语是什么)
所以信号下部的每个样本都应该替换为1,中间的2和高的3。并且我想控制步长的大小(在这个例子中是3,但它可以改变)
我怎样才能用 MATLAB 做到这一点?提前致谢。
我尝试了quant 和ordinal,但还是不行。
【问题讨论】:
标签: matlab signal-processing quantization
你想要这样的东西吗?
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 获取分位数来确定阈值。
【讨论】:
您可以使用 heaviside 函数的组合。我应该提一下,有时 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
【讨论】:
我认为这不是您要问的,但它可能包含一些有用的信息。
Matlab 定点工具箱可以处理量化(有限精度)数字和算术。键入“help fi”以查看如何声明具有特定字长、小数长度和符号的定点数。这对于二进制点缩放特别有用(二进制字中的每个位位置表示 2 的幂)。
您可能需要此工具箱的特殊许可证。
【讨论】: