0

为了找到最佳拟合(通过 polyfit),我得到了负 p 值,但 matlab 不接受它(下标索引必须是真正的正整数或逻辑。)。有什么方法可以使用它吗?我想不出替代方法。我总是会得到负值。

编辑:

为此,我正在尝试使曲线的基线变平。我正在运行 for 循环以适应 1 到 3 个订单。然后我使用最小 normr 的值来找到最佳拟合,然后从整个曲线中减去它以获得直线基线。由于上面描述的问题,我尝试了几条曲线,但效果很好,但不适用于所有数据。

我正在处理的部分代码:

for i=1:3 
  [p,s]=polyfit(x,y,i); 
  a=s.normr; 
  b(i,1)=p(1); 
  normr(i,1)=a; 
  ind=find(b==min(b)); 
  mn=b(ind,1); 
  Yflat=y-mn(1)*(x-mean(x)); 
  ca{2,2}=Yflat; 
  clear a b normr p s rte ind ind2 Yflat 
end  
4

2 回答 2

1

当我将图像转换为负坐标时,

我通常记录一个偏移量,例如 offset = [ -5, -8.5 ] 并像往常一样将强度值保存在以 (1, 1) 开头的矩阵中,

但是在计算时,让坐标数组加上偏移量

例如[ actualX, actualY ] = [ x, y ] + offset ;

它可能需要额外的努力,但它确实有效。

祝你好运!

于 2013-03-27T19:06:46.010 回答
0

下面的代码(来自注释的代码 + x, y 的初始化)执行。问题是什么?

x = 1:50;
y = randn(size(x));

for i=1:3
    [p,s]=polyfit(x,y,i);
    a=s.normr;
    b(i,1)=p(1);
    normr(i,1)=a;
    ind=find(b==min(b));
    mn=b(ind,1);
    Yflat=y-mn(1)*(x-mean(x));
    ca{2,2}=Yflat;
end
于 2013-03-27T19:06:13.200 回答