现有i01~i15 十五组1024×1280的矩阵
x为1×15的矩阵;
i01到i15每一个对应的点组成新的矩阵然后与x一次线性拟合(这里如果说的不太清楚不好理解的话 请参考下我后面写的程序)如此该得到1024×1280个线性拟合结果,我想把它先保存起来,后面插值的时候要用的拟合的函数
i16同样为1024×1280的矩阵,它每个点的值对应之前的每个拟合过的函数(也就是calibration curve )可求得每个点的x值;(这一步还不知道怎么编程)
我尝试编了如下的程序:
p=cell{1024,1280};
for i=1:1280
for j=1:1024
x=[0.2,8,17.8,25.1,32.3,46.5,50.2,54.5,58.1,62.2,66.3,70.2,75.2,80.3,82.7];
y(i,j)=[i01(i,j),i02(i,j),i03(i,j),i04(i,j),i05(i,j),i06(i,j),i07(i,j),i08(i,j),i09(i,j),i10(i,j),i11(i,j),i12(i,j),i13(i,j),i14(i,j),i15(i,j)];
p{i,j}=polyfit(x,y(i,j),1);
end
end
程序出错,希望高手指点下
拟合的结果里面是y=ax+b里的a和b吗?
不知道拟合的结果该如何保存 是不是不该用cell
??? The result of calling the static method or constructor "cell" cannot be indexed with
cell array indexing.
~~非常感谢您的帮助~~
好像也不行,出现Subscripted assignment dimension mismatch.
或者可不可以不保存拟合结果,直接用它来求i16的插值,不知道可不可行呢?该如何写呢,请指导下
这个问题是由于y的赋值不正确引起的
p=cell(1280,1024);
for i=1:1280
for j=1:1024
x=[0.2,8,17.8,25.1];
y=[i01(i,j),i02(i,j),i03(i,j),i04(i,j)]; % y是一维数组,不要用下标(i,j)
p{i,j}=polyfit(x,y,1);
end
end
祝好运