本小节主要分享利用matlab来编程绘图,如绘制曲线、圆、点以及直线拟合等。
例1、进行最小二乘直线拟合
x=1:15;
y=3*x+6+rand(1,15)*5;
plot(x,y,'r*');
hold on
p=polyfit(x,y,1);
y1=polyval(p,x);
plot(x,y1,'color','b','linewidth',2)
xlabel('x');
ylabel('y');
legend('rand number','fitted line');
结果如下:
plot()函数为绘图函数,需要了解更详细的,可以在matlab的command window 输入doc plot 了解详细使用方法。
hold on 是在绘图过程中,保存之前所绘制的线或者点,在此基础上继续绘制,而不是重新展开一张画幅。
polyfit这个函数完成了数据的最小二乘拟合,该函数可以完成任意阶次的多项式拟合,其形式为polyfit(x,y,n),上述例子为一次拟合。
polyval这个函数为多项式求值。
plot(x,y1,'color','b','linewidth',2)中,color后跟的‘b’代表颜色的选取,线宽为2,可以修改。
xlabel('x')和ylabel('y')显示x,y坐标分别代表什么,如上图。
legend('rand number','fitted line')可以标出图中点或线分别代表什么,可以再图中移动其位置。
例2、一个平面上的椭圆可以表示成下列方程式: (x/a)^2+(y/b)^2=1。我们也可以用参数将椭圆表示成:x=a*cos(sita) y=b*sin(sita),请利用上述参数式,画出一个椭圆,其中a=5,b=3,而且椭圆上共有100个点。
编写一个小程序如下:
function plotellipse(a,b,n)
for sita=linspace(0,2*pi,n)
x=a*cos(sita);
y=b*sin(sita);
plot(x,y,'r.-')
hold on
end
end
因需要根据所输入的a,b,n值绘图,所以再编写程序如下:
a=input('请输入a=');
b=input('请输入b=');
n=input('请输入n=');
plotellipse(a,b,n);
运行主程序,并输入a,b,n值,得到如下结果图:
其实,在上述的小程序中,不用for循环完全可以的,大家可以省去。
linspace(0,2*pi,n)这个函数是线性输出0到2*pi的n个点。
plot(x,y,'r.-')函数为绘图函数,‘r.-’代表绘制红色的.-图。
a=input('请输入a='),这里input函数很有用,大家可以记忆一下,很多地方可能都会用到,简单常用。
例3、一条参数式的曲线可由下列方程式表示:x=sin(-t)+t y=1-cos(-t),当t由0变化到4*pi时,画出此曲线在XY平面的轨迹。
编写程序如下:
function quxian(t)
for t=0:0.01:4*pi
x=sin(-t)+t;
y=1-cos(-t);
plot(x,y);
hold on
axis([-1,14,-1,2.5]);
end
xlabel('x');
ylabel('y');
end
结果如下:
axis([-1,14,-1,2.5]),规定了图中x,y轴的范围。