如何在Matlab中缩放两个信号

时间:2017-02-17 09:52:57

标签: matlab

我想通过计算比例因子将信号(Sig)缩放到其参考(Ref)。通常,我会将max(Ref)除以max(Sig)来计算比例因子。但是,它仅在两个信号从零开始时才有效。

如果信号如下,如何缩放:

Ref = [2 2 2 2 3 4 4 4 4 4 4 4 3 2 2 2 2 2 2 2 2 3 4 4 4 4 4 4 4 3 2 2 2 2];
Sig = [2 2 2 2 4 6 6 6 6 6 6 6 4 2 2 2 2 2 2 2 2 4 6 6 6 6 6 6 6 4 2 2 2 2];

这是我的算法:

maxSig = max(Sig);
maxRef = max(Ref);
sf = (maxRef/maxSig);

figure('color','w')
hold on
plot(Ref, 'r')
plot((Sig)*sf, 'b')
legend('Reference','Signal')
grid on
hold off

编辑:这是我希望实现的目标:Sig已乘以缩放系数,使其与Ref完美对齐 enter image description here

注意:两个信号总是相同的长度,并且没有timelag。

1 个答案:

答案 0 :(得分:2)

这不是Matlab独有的问题,所以我会给出一个更一般的答案: 标准化的通常方法是通过平均值减去并除以标准偏差。由于您不想修改参考信号,这是我的解决方案:

mRef = mean(Ref)
stdRef = std(Ref)
mSig = mean(Sig)
stdSig = std(Sig)
newSig = ((Sig - mSig)/stdSig) * stdRef + mRef

正如评论中所述,您还可以根据两个信号的最小值和最大值之间的差异进行缩放。