本小節主要分享利用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
endend
因需要根據所輸入的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軸的範圍。