Matlab 应使用fminsearch移动多少曲线以最小化差异

Matlab 应使用fminsearch移动多少曲线以最小化差异,matlab,optimization,fminsearch,Matlab,Optimization,Fminsearch,我有两个数据集,如果我把它们画出来,它们就像你看到的正弦波一样 我想移动一条曲线,以便在另一条曲线上重叠。我想使用fminsearch来找到一个转换,以最小化它们之间的差异。我有数字数据,我不知道如何使用fminsearch和可用信息。假设您有两个数据集作为n元素red和blue的向量,每个都是n-by-1向量。 然后,给定一个整数移位delta,您可以使用它来移位其中一个信号: shifted = circshift( red, delta ); 现在,您可以使用它来定义目标函数: 请注意,

我有两个数据集,如果我把它们画出来,它们就像你看到的正弦波一样


我想移动一条曲线,以便在另一条曲线上重叠。我想使用fminsearch来找到一个转换,以最小化它们之间的差异。我有数字数据,我不知道如何使用fminsearch和可用信息。

假设您有两个数据集作为
n
元素
red
blue
的向量,每个都是
n
-by-1向量。
然后,给定一个整数移位delta,您可以使用它来移位其中一个信号:

shifted = circshift( red, delta );
现在,您可以使用它来定义目标函数:

请注意,
fminsearch
严重依赖于初始值
x0
,更改此值可能会对恢复的
delta
的质量产生显著影响

这里有一个例子

 th = 0:.01:2*pi;
 blue = sin( th ); % orig signal
 green = sin( th + .5 ); % shifted signal
 delta = fminsearch( @( x ) sum( ( blue(:) - circshift( green(:), round(x) ) ).^2 ), 20 );
 % display results
 figure;
 plot( [blue;green]', 'LineWidth', 2 );
 hold all;
 plot( circshift( green(:), round(delta) ), '--r', 'LineWidth', 1.5 );
 legend({'orig signal','shifted signal','after recovering \delta'});
在本例中,
delta
的恢复值为
50

输出为

我对这条线有一点意见(绘图(圆圈移位(绿色(:),圆形(三角形)),'--r',线宽,1.5);@User1551892您的意见是什么?对不起,我以为我没有提交提交我的提交,不知怎的,是我做的。您没有使用原始x轴值,因此两条曲线100%重叠。但是,如果使用固定的x轴,则部分曲线将不会重叠。与此相关的问题。非常感谢您以一种好的方式解释了这个解决方案。我对如何在fminsearch函数中使用数值感到困惑。
 th = 0:.01:2*pi;
 blue = sin( th ); % orig signal
 green = sin( th + .5 ); % shifted signal
 delta = fminsearch( @( x ) sum( ( blue(:) - circshift( green(:), round(x) ) ).^2 ), 20 );
 % display results
 figure;
 plot( [blue;green]', 'LineWidth', 2 );
 hold all;
 plot( circshift( green(:), round(delta) ), '--r', 'LineWidth', 1.5 );
 legend({'orig signal','shifted signal','after recovering \delta'});