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'});