Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Matlab中缩放两个信号_Matlab - Fatal编程技术网

如何在Matlab中缩放两个信号

如何在Matlab中缩放两个信号,matlab,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

我想通过计算缩放因子将信号(
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


注:两个信号的长度始终相同,并且没有时间间隔。

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

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

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

您必须在某个地方减去最小值,但这取决于您想做什么。在你的例子中,期望的输出是什么?如果tehre没有偏移,那么它们从零开始,对吗?@AnderBiguri我认为OP意味着没有x轴offset@LuisMendo哦,我假设没有timelag意味着没有x轴offest从你的例子来看,看起来你想做
Sig_scaled=(max(Ref)-min(Ref))/(max(Sig)-min(Sig))*(Sig-min(Sig))+min(Ref)但是由于您提供的解释非常少,这涉及到很多猜测。例如,
min(Sig)
是否总是等于
min(Ref)
,如果不是,行为应该是什么?它是有效的!非常感谢你。它是如何工作的?你能简单解释一下吗?如果你规范化你的信号和你的参考,如果它们是线性相关的,你应该得到相同的输出。但是你想保持你的参考完整,所以你只需要乘以stdRef,然后在两者上加上mRef,就可以回到你的参考信号。