想用matlab对分段函数进行直线拟合,但出问题了不知道怎么解决。在线等!!!!

代码如下:(其中直线拟合的拐点是从loglog图中知道的)function CAmoxingA=readdata('x');CCu=A(:,3);CCuMin=min(CCu);CCuMax=max(CCu);[n,p]=size(A);for i=1:1:n; CCuj(i)=CCuMin*exp(((i-1)/50)*log(CCuMax/CCuMin)); k=find(CCu>CCuj(i)); [y(i),m]=size(k);end x=CCuj; x1=x(1,1:19); x2=x(1,19:38); x3=x(1,38:2168); y1=y(1,1:19); y2=y(1,19:38); y3=y(1,38:2168); p1=polyfit(x1,y1,1); p2=polyfit(x2,y2,1); p3=polyfit(x3,y3,1); %Y1=vpa(poly2sym(p1,'x'),6) %Y2=vpa(poly2sym(p2,'x'),6) %Y3=vpa(poly2sym(p3,'x'),6) x1curve=0.7:0.1:6.3; x2curve=6.2:0.1:19.0; x3curve=18.0:0.1:71.0; p1curve=polyval(p1,x1curve); p2curve=polyval(p2,x2curve); p3curve=polyval(p3,x3curve); %plot(x,y,':',x1curve,p1curve,'--',x2curve,p2curve,'-.',x3curve,p3curve,'*') %legend('x-y','p1','p2','p3') plot(log(x),log(y),'o',x1curve,p1curve,x2curve,p2curve,x3curve,p3curve) loglog(x,y,'o'); xlabel('C'); ylabel('A(c)>C)'); grid on grid minor

第1个回答  2016-06-05
% 给个例子参考哈
U = 0:11;
I = [0.40 0.37 0.39 0.44 0.55 0.88 1.30 1.65 1.89 2.14 2.46 2.89];
p = polyfit(U,I,1); %拟合
UU = min(U):.5:max(U);
II = polyval(p,xx);
hold on;
plot(U,I,'bo'); %画原始数据点
plot(UU,II,'r-'); %画拟和曲线
xlabel('U'); ylabel('I');
legend('原始数据','拟合曲线');追问

这种我都懂,但我就不知道我的程序哪里出问题了,你可以看一看吗

本回答被网友采纳
相似回答