Matlab画函数图学习笔记

19 篇文章 8 订阅

函数绘图分为二维绘图和三维绘图

其中最重要的两个函数为plot和plot3,其它函数基本上是对其功能的扩充

1.plot(y)

如果y是一个向量,画出的二维图,横轴y的下标,纵轴为y的每一个数,如果y是一个复数,那么相当于plot(real(y),imag(y)),即横轴为实部,纵轴为虚部

例1,y为实数

clear
clc
x=[0 0.7 0.3 0.5 0.1 0.6 1.2 1.6 1.8 2.9 3.1];
plot(x)
结果图

例2,y为复数

clear
clc
x=[0.8+9.6i 2.2+0.4i 9.1+7.7i 1.5+8.1i 8.2+8.6i 5.3+0.8i 9.9+3.9i 0.7+2.5i 4.4+8.0i 1.1+4.3i];
plot(x)
结果图

2.plot(x,y)

以x为横轴,y为纵轴绘制二维函数图像

例1

clear
clc
x=0:0.01:4*pi;
y=sin(x);
plot(x,y)
结果图

例2:y作为矩阵

clear
clc
x=0:0.01:4*pi;
y(1,:)=sin(x);
y(2,:)=0.2*sin(x);
y(3,:)=0.4*sin(x);
plot(x,y)
结果图



3.plot(x,y,s)

s是一个字符串代表显示的样式

s分为有三类代表不同含义的字符串组合,分别是颜色、点形状、线型,这三个顺序可以互换也可以缺省

例如plot(x,y,'c+:')代表青色+号点连线

具体表示如下

颜色控制
b蓝色c青色g绿色k黑色m紫红色r红色w白色y黄色
数据点标记字符
.点+十字号o圆圈*星号x叉号s正方形d菱形h六角形p五角星v下三角^上三角>右三角<左三角
线型控制
-实线(默认):点连线-.点划线--虚线
clear
clc
x=0:0.01:4*pi;
y=sin(x);
plot(x,y,'c+:')

clear
clc
x=0:0.01:4*pi;
y1=sin(x);
y2=sin(x-0.2);
y3=sin(x+0.2-0.7);
plot(x,y1,'-',x,y2,'-.',x,y3,'--')

4.axis函数调整坐标
axis([XMIN XMAX YMIN YMAX])
限定函数图像的二维坐标
axis([XMIN XMAX YMIN YMAX ZMIN ZMAX])
限定函数图像的三维坐标
axis([XMIN XMAX YMIN YMAX ZMIN ZMAX CMIN CMAX])
限定函数图像的三维坐标和颜色范围

axis('控制字符串')  
auto自动默认square正方形equalxy刻度相等normal关闭axis(square)axis(equal)效果ij使用矩阵坐标系xy使用笛卡尔坐标系on打开所有标注、标记和背景off关闭所有标注、标记和背景

在新版中axis('控制字符串') 可以写成 axis '控制字符串',即axis('square')与axis square作用效果一样

5.标注刻度

set(gca,'xtick',[标示矢量]) set(gca,'ytick',[标示矢量])
标注坐标刻度
set(gca,'xticklabel','字符串1|字符串2......')set(gca,'yticklabel','字符串1|字符串2......')
按字符串标注坐标刻度

clear
clc
x=0:0.05:6.5;
y=sin(x);
plot(x,y);
axis([0 3*pi -2 2])                                              %坐标轴比例控制
axis square                                                      %坐标轴特性控制
set(gca,'yticklabel','-2|-1.5|-1|-0.5|zero|0.5|one|1.5|two')     %改变y轴的标注点
set(gca,'xtick',[0 1.57 3.14 4.71 6.28])                         %改变x轴的标注点

6.添加标注文字

xlabel('字符串')ylabel('字符串')title('字符串')
x轴标注,y轴标注,标题标注
text(x,y,'字符串')
在坐标(x,y)这一点加标注字符串
标注文字可以使用的转义字符串
\piπ\alphaα\betaβ\leftarrow左箭头←\rightarrow右箭头→\bullet黑点·

clear
clc
t=0:0.01:2*pi;
plot(t,sin(t))
set(gca,'xtick',[0 1.57 3.14 4.71 6.28])
xlabel('t(deg)')
ylabel('mangnitude(v)')
title('This is a example 0\rightarrow 2\pi')
text(3.14,sin(3.14),'\leftarrow this zero for \pi')

7.对线添加注解

legend(string1,string2,string3, ...,LocationNumber)
按绘图顺序加注解,最后一个参数含义
0自动放置1右上角2左上角3左下角4右下角-1窗口右边

注:新版中采用legend(...,'Location',LOC),其中LOC使用特定字符串代表方位,如 legend('First','Second','Third','Location','NorthEastOutside')
具体如下

        'North'              inside plot box near top
        'South'              inside bottom
        'East'               inside right
        'West'               inside left
        'NorthEast'          inside top right (default for 2-D plots)
        'NorthWest'           inside top left
        'SouthEast'          inside bottom right
        'SouthWest'          inside bottom left
        'NorthOutside'       outside plot box near top
        'SouthOutside'       outside bottom
        'EastOutside'        outside right
        'WestOutside'        outside left
        'NorthEastOutside'   outside top right (default for 3-D plots)
        'NorthWestOutside'   outside top left
        'SouthEastOutside'   outside bottom right
        'SouthWestOutside'   outside bottom left
        'Best'               least conflict with data in plot
        'BestOutside'        least unused space outside plot

clear
clc
x=0:0.2:12;
plot(x,sin(x),'-',x,1.5*cos(x),':');
legend('First','Second',-1)

8.

hold on hold off
图形保持,解除图形保持

clear
clc
x=0:0.2:12;
plot(x,sin(x),'-')
hold on
plot(x,1.5*cos(x),':')

9.

gird on gird off
添加网格,去除网格

10.窗口分割
subplot(m,n,p)
子窗口,把窗口分割成m行n列,p代表第几个(逐个按行取),其中逗号可以省略

clear
clc
x=0:0.05:7;
y1=sin(x);
y2=1.5*cos(x);
y3=sin(2*x);
y4=5*cos(2*x);
figure
subplot(2,2,1);plot(x,y1);title('sin(x)')
subplot(2,2,2);plot(x,y2);title('1.5*cos(x)')
subplot(2,2,3);plot(x,y3);title('sin(2x)')
subplot(2,2,4);plot(x,y4);title('5*cos(2x)')
figure
subplot(221);plot(x,y1);title('sin(x)')
subplot(222);plot(x,y2);title('1.5*cos(x)')
subplot(223);plot(x,y3);title('sin(2x)')
subplot(224);plot(x,y4);title('5*cos(2x)')


关于子图的合并可以参考这篇文章:Matlab使用subplot合并子图

11.fill(x,y,c)
填充二维封闭图形,(x,y)为坐标,c为颜色参数,颜色参数可为 'r','g','b','c','m','y','w','k'或一个RGB颜色矩阵[r g b]

clear
clc
x=0:0.05:7;
y=sin(x);
subplot(121)
plot(x,y)
subplot(122)
fill(x,y,'m')

12.特殊函数图

semilogx(x,y,'参数')semilogy(x,y,'参数')loglog(x,y,'参数')
以10为底的对数,参数要求与plot相同
polar(theta,radius,'参数')
绘制相角theta,半径为radius的极坐标图形,相角为弧度值

clear
clc
y=[0,0.55,2.5,6.1,8.5,12.1,14.6,17,20,22.1];
subplot(221);plot(y);
title('线性坐标图');
subplot(222);semilogx(y);
title('x轴对数坐标图');
subplot(223);semilogy(y);
title('y轴对数坐标图');
subplot(224);loglog(y);
title('双对数坐标图');

例:绘制极坐标

clear
clc
t=0:0.01:2*pi;
r=2*cos(2*(t-pi/8));
polar(t,r)

13.特殊形状图

fplot('x',[min,max])
自适应采样,x为函数名,[min,max]为区间

pie(x,'参数')bar(x,'参数')barh(x,'参数');
pie饼图,bar条形图,barh垂直条形图

clear
clc
fplot('cos(tan(pi*x))',[-0.4,1.4])

clear
clc
x=[8 20 36 24 12];
subplot(221);pie(x,[1 0 0 0 1]);
title('饼图');
subplot(222);bar(x,'group');
title('垂直条形图');
subplot(223);bar(x,'stack');
title('累加为纵坐标的垂直条形图');
subplot(224);barh(x,'group');
title('水平条形图');

bar中group和stack区别,多组数据时group表示并列放置,stack表示堆叠放置

clear
clc
y=rand(5,4)*8; % 生成5行4列的测试数据
subplot(121);bar(y,'group');
subplot(122);bar(y,'stack');
%注意区分两种类型的区别。y是5*4的矩阵,所以总共分为5类。
%group将一行中的四个数据分别画出
%stack将一行的数据叠加画在一条bar上。


14.梯形
stairs(x)stairs(x,y)

stairs与plot一样,绘制时的线按梯形绘制

clear
clc
x=0:0.1:3;
y=sin(x);
subplot(121);stairs(x);
subplot(122);stairs(x,y);

14.分布条形图

hist(x,y)绘制分布条形图

例:绘制正态分布条形图

clear
clc
x=randn(1,1000);
y=-4:0.1:4;
hist(x,y)


15.

compass复数的原子矢量图
feather复数的水平矢量图

clear
clc
x=[-2+3j,3+4j,1-7j];
subplot(121);compass(x);
real=[-2 3 1];
imag=[3 4 -7];
subplot(122);feather(real,imag);

16.

peaks双峰函数
mershgrid网格矩阵

clear
clc
[x,y,z]=peaks(100);
peaks(100)

clear
clc
a=[1,2,3,4];
b=[5,6,7,8];
[X,Y]=meshgrid(a,b)
Z=X.*Y
结果

X =

     1     2     3     4
     1     2     3     4
     1     2     3     4
     1     2     3     4


Y =

     5     5     5     5
     6     6     6     6
     7     7     7     7
     8     8     8     8


Z =

     5    10    15    20
     6    12    18    24
     7    14    21    28
     8    16    24    32

>> 
17.

plot3(x,y,z)三维绘图

例:螺旋线

clear
clc
z=0:pi/50:10*pi;
x=sin(z);
y=cos(z);
plot3(x,y,z)

例:多条三维曲线

clear
clc
[x,y]=meshgrid([-2:0.1:2]);
z=x.*exp(-x.^2-y.^2);
plot3(x,y,z)

例:各种三维曲面

clear
clc
x=-10:0.5:10;
y=-8:0.5:8;
[X,Y]=meshgrid(x,y);
Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2);
subplot(221);
mesh(X,Y,Z);
title('普通三维网格曲面');
subplot(222);
meshc(X,Y,Z);
title('带等高线的三维网格曲面');
subplot(223);
meshz(X,Y,Z);
title('带底座的三维网格曲面');
subplot(224);
surf(X,Y,Z);
title('填充颜色的三维网格曲面');


笔者此处并没有出现书上所说除以0的警告

书上建议将第6行改为

Z=sin(sqrt(X.^2+Y.^2))./(sqrt(X.^2+Y.^2)+eps);
改完后的程序为

clear
clc
x=-10:0.5:10;
y=-8:0.5:8;
[X,Y]=meshgrid(x,y);
Z=sin(sqrt(X.^2+Y.^2))./(sqrt(X.^2+Y.^2)+eps);
subplot(221);
mesh(X,Y,Z);
title('普通三维网格曲面');
subplot(222);
meshc(X,Y,Z);
title('带等高线的三维网格曲面');
subplot(223);
meshz(X,Y,Z);
title('带底座的三维网格曲面');
subplot(224);
surf(X,Y,Z);
title('填充颜色的三维网格曲面');














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值