最小二乘法适用于Matlab中的时间分类

时间:2010-08-18 14:44:53

标签: matlab time scaling least-squares

我想知道Matlab中是否存在最小二乘例程,以便及时将模板信号缩放到测量信号。假设我的模板是大约的信号。 1秒,但测量中的相应部分是1.2秒。现在我想将我的模板缩放为1.2秒。当然,可以简单地在几个步骤中重新缩放模板,与每个步骤的信号交叉相关并找到最大值。然而,这会大大减慢我的计划。 Matlab的lsqcurvefit需要两个相等长度的向量,其中一个向量的长度正是我想要改变的长度。 有没有人有想法? 谢谢!

1 个答案:

答案 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/