为了找到最佳拟合(通过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
答案 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