我想知道Matlab中是否存在最小二乘例程,以便及时将模板信号缩放到测量信号。假设我的模板是大约的信号。 1秒,但测量中的相应部分是1.2秒。现在我想将我的模板缩放为1.2秒。当然,可以简单地在几个步骤中重新缩放模板,与每个步骤的信号交叉相关并找到最大值。然而,这会大大减慢我的计划。 Matlab的lsqcurvefit需要两个相等长度的向量,其中一个向量的长度正是我想要改变的长度。 有没有人有想法? 谢谢!
答案 0 :(得分:0)
您是否真的尝试过简单的fminsearch
函数方法?它可能没有你想象的那么慢。
e.g。 (未经测试 - 只是为了说明)
x=template; y=data;
fn=@(p)sum(( x(:)-y( 1+max(0,min(length(y),floor([0:(length(x)-1)]-p(1)).*p(2))) ) ).^2)
b=fminsearch(fn,[0 1]); % [offset, scale]
你可能需要调整限制等等!
它不合适,您也可以查看CPM工具箱(虽然它可能太复杂,无法满足您的需求) http://www.cs.toronto.edu/~jenn/alignmentStudy/