matlab学习记(二)画图

画图是数模中重要的方法~
1.plot 函数基本用法

(1)plot(x,y) 通常为长度相同的向量

>> x=[2.5,3.5,4,5];
>> y=[1.5,2.0,1,1.5];
>> plot(x,y)

(2)最简单的plot函数调用格式

plot(x)

>> x=[2.5,3.5,4,5];
>> y=[1.5,2.0,1,1.5];
>> plot(x,y)

当x是复数向量时,分别以该向量元素实部和虚部为横纵坐标绘制出一条曲线。

>> x=[2.5,3.5,4,5];
>> y=[1.5,2.0,1,1.5];
>> cx=x+y*i;
>> plot(cx)

复数性变量也可以用complex函数构建

cx=complex(x,y);

(3)plot(x,y)函数参数的变化形式

🤡x是向量,y是矩阵

如果矩阵y的行数/列数等于x的长度,则以x为横坐标,以列向量/行向量为纵坐标绘制曲线,曲线条数等于y的列数/行数

eg.绘制sin(x),sin(2x),sin(x/2)的图像

>> x=linspace(0,2*pi,100);
>> y=[sin(x);sin(2*x);sin(0.5*x)];
>> plot(x,y)

🤡x,y为同型矩阵

以x,y对应列元素为横纵坐标分别绘制曲线,曲线条数等于矩阵的列数

>> t=0:0.01:2*pi;
>> t1=t';
>> x=[t1,t1,t1];
>> y=[sin(t1),sin(2*t1),sin(0.5*t1)];
>> plot(x,y)

(4)含多个输入参数的plot函数

plot( x1, y1, x2, y2, ... , xn, yn)

每一向量对构成一组数据点的横纵坐标,绘制一条曲线

>> t1=linspace(0,2*pi,10);
>> t2=linspace(0,2*pi,20);
>> t3=linspace(0,2*pi,100);
>> plot(t1,sin(t1),t2,sin(t2)+1,t3,sin(t3)+2)

(5)含选项的plot函数

plot(x, y, 选项)

"-" 实线
“:”:虚线
“-.”:点划线
“--”:双划线
“r”“g”“b”:红绿蓝
“w”:白色
“k”:黑色
“*”:星号
“o”:圆圈
“s”:方块
“p”:五角星
“^”:朝上三角符号

eg.绘制曲线y=\(e^{-0.5x}sin(2\pi x)\)及其包络线

>> x=(0:pi/50:2*pi)';
>> y2=2*exp(-0.5*x).*sin(2*pi*x);
>> y1=2*exp(-0.5*x)*[1,-1];
>> x1=0:0.5:6;
>> y3=2*exp(-0.5*x1).*sin(2*pi*x1);
>> plot(x,y1,'k:',x,y2,'b--',x1,y3,'rp')

2.fplot函数

(1).基本用法

fplot(f, lims, 选项)

f代表一个函数,通常采用函数句柄的形式(匿名函数),lims为x轴的取值范围,用二元向量【xmin,xmax】描述

>> fplot(@(x) sin(1./x),[0,0.2],'b')

(2)双输入函数参数

fplot( funx, funy, tlims, 选项 )其中,funx,funy代表函数,通常使用函数句柄的形式。tlims为参数函数funx和funy的自变量的取值范围,用二元向量【tmin,tmax】描述

eg.绘制螺旋线x=t * sint , y= t * cost

>> fplot(@(t) t.*sin(t),@(t)t.*cos(t),[0,10*pi],'r')

3.图形标注

title(图形标题)
xlabel
ylabel
text(x,y,说明)
legend(图例1.图例2,……)

legend函数应用

eg.绘制不同频率的正弦曲线并用图例标注曲线

>> x=linspace(0,2*pi,100);
>> plot(x,[sin(x);sin(2*x);sin(3*x)])
>> legend('sinx','sin(2x)','sin(3x)')

4.坐标控制

(1).axis

axis( [ xmin, xmax, ymin, ymax ,zmin, zmax] );

axis on;

axis off;

axis square: 产生正方形坐标系(默认矩形)

(2).给坐标系加网格,边框

grid on

grid off

box on

box off

(3)图形保持

hold on

hold off

>> t=linspace(0,2*pi,100);
>> x=sin(t);y=cos(t);
>> plot(x,y,'b')
>> hold on
>> plot(2*x,2*y,'r--')
>> grid on
>> axis([-2.2,2.2 -2.2,2.2])
>> axis equal

(4).图形窗口的分割

subplot(m,n,p)

将图形窗口分成m*n个绘图区,当前绘图区为p

>> x=linspace(0,2*pi,60);
>> subplot(2,2,1)
>> plot(x,sin(x)-1);
>> title('sin(x)-1');axis([0,2*pi,-2,0])
>> subplot(2,1,2)
>> plot(x,cos(x)+1);
>> title('cos(x)+1');axis([0,2*pi,0,2])
>> subplot(4,4,3)
>> plot(x,tan(x))
>> title('tan(x)');axis([0,2*pi,-40,40])
>> subplot(4,4,8)
>> plot(x,cot(x));
>> title('cot(x)');axis([0,2*pi,-35,35])

5.极坐标图

polar( 极角, 极径, 选项)

eg.

>> t=0:pi/100:2*pi;
>> r=1-sin(t);
>> subplot(1,2,1)
>> polar(t,r)
>> subplot(1,2,2)
>> t1=t-pi/2;
>> r1=1-sin(t1);
>> polar(t,r1)

6.统计图

(1)条形类图形

1).条形图

bar: 绘制垂直条形图

barh:绘制水平条形图

bar(y, style)

style:" grouped ":簇状分组

“stacked": 堆积分组

>> y=[1,2,3,4,5;1,2,1,2,1;5,4,3,2,1];
>> subplot(1,2,1)
>> bar(y)
>> title('Group')
>> subplot(1,2,2)
>> bar(y,'stacked')
>> title('Stack')

bar(x, y, style )x储存横坐标,y储存数据,y的行数必须与向量x的长度相等

>> x=[2015,2016,2017];
>> y=[68,80,115,98,102;75,88,102,99,110;81,86,125,105,115];
>> bar(x,y)
>> title('Group');

2)直方图

hist函数:绘制直角坐标系下的直方图

rose函数:绘制极坐标系下的直方图

hist(y,x): y是要统计的数据,x用于指定区间的划分方式。若x是标量,则统计区间均分成x个小区间;若x是向量,则向量x中的每一个数指定分组中心值,元素的个数为数据分组数。x缺省为10

>> y=randn(500,1);
>> subplot(2,1,1);
>> hist(y);
>> title('高斯分布直方图');
>> subplot(2,1,2);
>> x=-3:0.2:3;
>> hist(y,x);
>> title('指定区间中心点的直方图')

rose(theta, [, x]) theta确定每一区间与原点的角度

>> y=randn(500,1);
>> theta=y*pi;
>> rose(theta)
>> title('在极坐标下的直方图')

(2)面积类图形

1).扇形图

pie(x, explode)数据+显示模式

>> score=[5,17,23,9,4];
>> ex=[0,0,0,0,1];
>> pie(score,ex)
>> legend('优秀','良好','中等','及格','不及格','location','eastoutside')

location 指定图例位置,eastoutside:图例在绘图区域右边的外侧

2).面积图

area

(3)散点类图形

scatter函数:散点图

scatter(x, y, 选项, ‘filled’ )

>> t=0:pi/50:2*pi;
>> x=16*sin(t).^3;
>> y=13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t);
>> scatter(x,y,'rd','filled')

stairs函数:阶梯图

stem函数: 杆图

3.矢量类图形

compass函数:罗盘图

feather函数:羽毛图

quiver函数:箭头图

五.曲面
曲面由无数条曲线构成
eg.z=xsiny+4xcosy
x每取一个定值,都确定了一条二维曲线

>> x=-3:0.1:3;
>> y=0:0.1:2*pi;
>> [x,y]=meshgrid(x,y);
>> z=x.*sin(y)+4*x.*cos(y);
>> plot3(x,y,z)

meshgrid(x,y)产生一个以向量x为行,y为列的矩阵
例如:要在“3<=x<=5,6<=y<=9,z不限制区间” 这个区域内绘制一个3D图形,如果只需要整数坐标为采样点的话。我们可能需要下面这样一个坐标构成的矩阵:

(3,9),(4,9),(5,9);

(3,8),(4,8),(5,8);

(3,7),(4,7),(5,7);

(3,6),(4,6),(5,6);

然后储存时可以把各点的x,y坐标分别储存到两个矩阵中,于是便成为了

3,4,5;
3,4,5;
3,4,5;
3,4,5;

9,9,9;
8,8,8;
7,7,7;
6,6,6;

因此可以看出:meshgrid形成的x矩阵每一行相同,y矩阵每一列相同
上述函数用mesh(x,y,z)显示的网格图比plot3(x,y,z)要更直观一些
总结一下:
plot3(x,y,z)三维曲线图

mesh(x,y,z)三维网格图

meshc(x,y,z)三维网格图+xoy平面曲面的等高线

meshz(x,y,z)三维网格图+曲线下面加上个矩形垂帘

surf(x,y,z)三维着色曲面图

surface(x,y,z)得到曲面在xoy平面的投影图,以颜色区分z值大小

shading flat指令让曲面更加平滑

六.散点图

>> x=[1,2,3,4,5];
>> y=[10,30,67,89,130];
>> plot(x,y,'k') % 折线图
>> scatter(x,y,'k') % 散点图
posted @ 2022-03-10 20:44  misasteria  阅读(914)  评论(0编辑  收藏  举报