我想通过计算比例因子将信号(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
完美对齐
注意:两个信号总是相同的长度,并且没有timelag。
答案 0 :(得分:2)
这不是Matlab独有的问题,所以我会给出一个更一般的答案: 标准化的通常方法是通过平均值减去并除以标准偏差。由于您不想修改参考信号,这是我的解决方案:
mRef = mean(Ref)
stdRef = std(Ref)
mSig = mean(Sig)
stdSig = std(Sig)
newSig = ((Sig - mSig)/stdSig) * stdRef + mRef
正如评论中所述,您还可以根据两个信号的最小值和最大值之间的差异进行缩放。