在Matlab中使用负值

时间:2013-03-27 18:15:42

标签: matlab

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

修改

我正试图平滑曲线的基线。我正在运行循环以适应从1到3的顺序。然后我使用最小的normr s值来找到最佳拟合,然后从整个曲线中减去它以获得基线直线。我尝试使用几条曲线,但是由于上面描述的问题,它不能用于所有数据。

我正在处理的部分代码:

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  

2 个答案:

答案 0 :(得分:1)

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

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

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

e.g。 [ actualX, actualY ] = [ x, y ] + offset ;

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

祝你好运!

答案 1 :(得分: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