本人小白,想请教如何在限定参数范围的情况下进行线性拟合。
在MATLAB中,通常解一个多元超定方程组,如
A=[1,2,3;
2,3,4;
3,4,5;
4,5,6;
5,6,7];
b=[40,50,60,70,80]';
若要求Z=[z1;z2;z3];
只需Z=A\b就可以了。
但如果额外需满足约束条件,比如0.54
为了实现上述目的,本人编了一个小程序,但计算速度太慢,以至于上述测试文件(共五行四列)需要2个半小时才能计算完成,能否优化呢?
程序如下:
function yy=mindz(dz)
z1=[0.54;1.09];
z2=[0;0.90];
z3=[0.54;1.09];
num_z3=fix((z3(2,1)-z3(1,1))/dz+1);
num_z2=fix((z2(2,1)-z2(1,1))/dz+1);
num_z1=fix((z1(2,1)-z1(1,1))/dz+1);
mm_total=num_z2*(num_z1*2+1-num_z3)*num_z3/2;
hwait=waitbar(0,'请等待>>>>>>>>');
yy=zeros(1,4);
load data.txt -ASCII %%该文件即为五行四列文件,包含了A项和b项
mm=1;