八度中的最小二乘插值

时间:2013-03-04 20:40:41

标签: math octave interpolation least-squares

我做了物理实验,得到了以下数据:

R=[2.91 2.19 1.76 1.43 1.20 1.01 0.88 0.77 0.67 0.6 0.52 0.46 0.41 0.37];
t=[35:5:100];
T=t+273.15;

现在我需要对公式ln R = f(1 / T)进行最小二乘插值。我从网上尝试了几种方法,但是没有一种方法可以工作。

1 个答案:

答案 0 :(得分:1)

显然,您正在使用线性租赁平方插值。计算系数的代码存在问题。

此操作

A \ y

A的列大小与y的行大小匹配时有效。

但在您的代码中,语句中ones(n,1)x的水平串联

A = [x ones(n,1)]
由于x的大小为1 * 14而ones(n,1)的大小为14 * 1,因此不允许

。显然,您会收到尺寸不匹配错误。

这是一个有效的代码:

R=[2.91 2.19 1.76 1.43 1.20 1.01 0.88 0.77 0.67 0.6 0.52 0.46 0.41 0.37];
t=[35:5:100];
T=t+273.15;


function coeff = least_square (x,y)
    n = length(x);
    A = [ones(n,1) x];
    coeff = A \ y;
    plot(x,y,'x');
    hold on
    interv = [min(x) max(x)];
    plot(interv,coeff(1)*interv+coeff(2));
end


least_square(R', T');