作业帮 > 综合 > 作业

MATLAB用plot拟合数据~我现在有三组数据,x是一样的就y不一样,然后想把三条曲线拟合在一张图上~

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/29 15:43:38
MATLAB用plot拟合数据~我现在有三组数据,x是一样的就y不一样,然后想把三条曲线拟合在一张图上~
啃到好多人都问过这问题,但解答里图上出现在都只有拟合好的曲线,我现在想要既有原曲线又有相应的拟合曲线~我自己做出来的只有三根原曲线和最后一组数据的拟合曲线.拜托各位了!
x=(1:1:10)';
y1=x.^2+5*rand(size(x));
y2=x.^2+5*rand(size(x))+10;
y3=x.^2+5*rand(size(x))+20;
%y1,y2,y3是三组数据,这里用函数加随机噪声代替
%注意x,y1,y2,y3要是长度相等的列向量
p1=polyfit(x,y1,2);
fity1=polyval(p1,x);
p2=polyfit(x,y2,2);
fity2=polyval(p2,x);
p3=polyfit(x,y3,2);
fity3=polyval(p3,x);
%fity1,fity2,fity3是三组拟合的数据
plot(x,[y1 y2 y3],'o'); hold on; %以点画原来的数据
plot(x,[fity1 fity2 fity3],'-'); hold off;%以线画拟合的曲线
再问: fity是什么?plot后面方括号括起来是什么意思?
再答: [y1 y2 y3]是吧y1 y2 y3 横着合起来拼成一个矩阵 上面例子中x,y1,y2,y3都是11行1列的数据 而[y1 y2 y3]就是11行3列的矩阵 plot(x,y) 其实可以用于一个x对应很多y的数据的画图 这个时候需要x是n行1列的数据 而y是n行m列的数据 函数会对每一列y画一条曲线 如果不想这样的话,你也可以把每条要画的分开 只需要在画第一条之后加上hold on,全部画完之后加hold off就可以 plot(x,y1,'ro'); hold on; plot(x,y2,'go'); plot(x,y3,'bo'); plot(x,fity1,'r-'); plot(x,fity2,'g-'); plot(x,fity3,'b-');hold off; 这样可以很方便地改变每条曲线的颜色和符号