建立画布
figure(1)
如果不再声明新画布,则默认绘图都在figure(1)进行画图。
开始绘图
使用 MATLAB 绘制图形有很多方法,以下是一个简单的例子来帮助你开始:
假设你要绘制一个正弦函数的图形,首先要创建一个包含 X 和 Y 值的向量:
x = 0:0.1:2*pi; % 创建一个从0到2*pi的向量,每隔0.1个单位取一个值
y = sin(x); % 计算 sin 函数在每个 x 值处的值
接下来,使用 plot 函数来绘制图形:
plot(x, y); % 绘制 y 关于 x 的图形
这将会弹出一个窗口,其中包含了你的图形。窗口的右上角就是我们画布的名字--Figere 1
如果你想要自定义图形,可以使用其他函数来设置图形的颜色、线型、标记等等。例如,以下是一个将图形线条改为红色、线型为虚线、添加数据点标记的例子:
plot(x, y, 'r--o'); % 将图形线条改为红色虚线,添加数据点标记
心细的小伙伴就发现了,我们之前在figure(1)绘制的蓝色sin(x)不见了,只有红色的sin(x)图像了。这就是建立画布的重要性了,我们的画图只能绘制一次,我们在这个绘制红色的sin(x)图像加一行代码--figure(2),这就OK了。
figure(1);
x = 0:0.1:2*pi; % 创建一个从0到2*pi的向量,每隔0.1个单位取一个值
y = sin(x); % 计算 sin 函数在每个 x 值处的值
plot(x, y); % 绘制 y 关于 x 的图形
figure(2);
plot(x, y, 'r--o'); % 将图形线条改为红色虚线,添加数据点标记
plot()进阶
在一个画布上同时画多个图像:
figure(2)
t = linspace(1,pi,100);
x1 = cos(t);
x2=sin(t);
x3 = cos(t).^2;
x4 = sin(t)+0.5.*cos(t);
plot(t,x1,'r-',t,x2,'b:',t,x3,'g-.',t,x4,'k--','Linewidth',1.5)
只要在plot()中写多个X,Y变量就行了,至于后面跟着的'r-'则是调整前面的图像的颜色和线行了,而'Linewidth'则是调整前面图像的线的宽度,默认为1。
总结:
plot函数用法:
plot(x1,y1,x2,y2)
线方式: - 实线 :点线 -. 虚点线 - - 波折线
点方式: . 圆点 +加号 * 星号 x x形 o 小圆
颜色: y黄; r红; g绿; b蓝; w白; k黑; m紫; c青
若要限制横纵坐标范围,给图形加上标注,给画布加上名字,给横纵坐标起个名字,打开网格那该怎么做呢?
figure(3)
x= linspace(1,pi,100);
y1 = cos(x);
y2=sin(x);
y3 = cos(x).^2;
axis([-3.3, 3.3, -inf, +inf]) % 设置横坐标范围为0-4pi,纵坐标范围不需要设置,写成-inf到+inf
plot(x, y1, 'o', x, y2, '*', x, y3, '+')
legend('y1','y2','y3') % 加上标注
title('图的标题')% 图的标题
xlabel('X坐标');
ylabel('Y坐标');
grid on%打开网格
现在图就绘制的比较好了。
hold on
有时候我们需要一次又一次添加图形而不是直接将所有图形一次性绘制在画布。但是如果我们一次又一次在画布上绘制,这就会遇到我们刚开始说画布的问题,即画布会重置,画布上只有我们上次绘制的图形。面对这种问题。我们可以使用hold on命令来解决。我们在figure(3)中在加一条sin(x)+0.5*cos(x)
figure(3)
x= linspace(1,pi,100);
y1 = cos(x);
y2=sin(x);
y3 = cos(x).^2;
axis([-3.3, 3.3, -inf, +inf]) % 设置横坐标范围为0-4pi,纵坐标范围不需要设置,写成-inf到+inf
plot(x, y1, 'o', x, y2, '*', x, y3, '+')
legend('y1','y2','y3') % 加上标注
title('图的标题')% 图的标题
xlabel('X坐标');
ylabel('Y坐标');
grid on%打开网格
hold on%持续在上一个画布作画
y = sin(x)+0.5.*cos(x);
plot(x, y,'o','MarkerSize',2) % MarkerSize 轨迹的大小
'MarkerSize'可以调节轨迹的大小,可以不加。
subplot()用法
当你需要在一个图形窗口中显示多个图形时,subplot()
函数是非常有用的。该函数可以让你将多个图形排列在同一个窗口中,使得它们可以同时显示,而不需要创建多个窗口。
下面是一个简单的示例,演示如何使用subplot()
函数来绘制多个图形:
% 创建一个行数为2,列数为2的子图矩阵,并指定第一个子图为当前子图
subplot(2,2,1);
% 绘制第一个子图
x = linspace(0,2*pi,100);
y = sin(x);
plot(x,y);
% 指定第二个子图为当前子图
subplot(2,2,2);
% 绘制第二个子图
x = linspace(0,2*pi,100);
y = cos(x);
plot(x,y);
% 指定第三个子图为当前子图
subplot(2,2,3);
% 绘制第三个子图
x = linspace(-pi,pi,100);
y = x.^2;
plot(x,y);
% 指定第四个子图为当前子图
subplot(2,2,4);
% 绘制第四个子图
x = linspace(-pi,pi,100);
y = x.^3;
plot(x,y);
在这个示例中,我们创建了一个2x2的子图矩阵,并指定第一个子图为当前子图。然后我们在第一个子图中绘制了正弦函数。接下来,我们指定第二个子图为当前子图,绘制了余弦函数。然后,我们指定第三个子图为当前子图,绘制了一个抛物线。最后,我们指定第四个子图为当前子图,绘制了一个立方函数。你可以看到,所有四个图形都在同一个窗口中显示,且都有各自的子图编号。
subplot()
函数的语法如下:
subplot(m,n,p)
其中,m
和n
是子图矩阵的行数和列数,p
是当前子图的位置。p
的取值范围从左上角的子图开始,从左到右,从上到下编号,直到右下角的子图。
linspace()
linspace
函数是 Matlab 中用来创建等差数列的函数。它的语法如下:
linspace(x1, x2, n)
其中,x1
和 x2
是等差数列的起点和终点,n
是等差数列的元素个数。
例如,要创建一个从 0 到 1 的等差数列,包含 11 个元素,可以使用以下命令:
x = linspace(0, 1, 11);
这将创建一个包含 11 个元素的行向量 x
,其中第一个元素为 0,最后一个元素为 1,且相邻两个元素之间的差值相等。
还可以使用 linspace
函数来创建二维等差数列。例如,要创建一个包含 5 行和 10 列的二维等差数列,可以使用以下命令:
[X,Y] = linspace(-1,1,10,5);
这将创建两个矩阵 X
和 Y
,分别包含 10 列和 5 行,且 X
和 Y
中的元素是在 [-1,1] 区间内均匀分布的。
----------------------------------------分割线:更新2023.11.5----------------------------------------------------------
直方图与阶梯图的绘制
stem()直方图绘制函数
stairs()阶梯图绘制函数
clear,clc
figure(1)
t = linspace(-pi,pi,100);
subplot(2,2,1)
plot(t,sin(t))
subplot(2,2,2)
plot(t,cos(t))
subplot(2,2,3)
stem(t,0.5.*sin(t))%绘制直方图
title('直方图')
subplot(2,2,4)
stairs(t,0.5.*cos(t).^(2))%绘制阶梯图
title('阶梯图')
绘制直方图2:
bar(x,y)绘制直方图
fill(x,y,'g')填充函数,最后一个颜色参数必须有
clear;clc
figure(2)
x = 0:0.1:7;
y = 2.*exp(-0.5.*x);
subplot(1,2,1);
bar(x,y)%绘制直方图
subplot(1,2,2);
%填充函数
fill(x,y,'g')%最后一个颜色参数必须有
极坐标
polar()绘制极坐标函数
%极坐标
clear,clc
figure(3)
t=linspace(0,2.*pi,100)
r = sin(2.*t).*cos(2.*t)
figure(3)
subplot(2,1,1)
polar(t,r)
subplot(2,1,2)
plot(t,r)
绘制饼状图
%绘制饼状图
figure(4)
pie([37,15,28,20])
双Y坐标轴
plotyy()函数分别指定两个y坐标
clear,clc
figure(5)
t = linspace(-pi,pi,100);
x = sin(t)
y = 40000000.*cos(t)
plotyy(t,x,t,y)
对数坐标
loglog()对x,y坐标取对数
semilogx()只对x坐标取对数
semilogy()只对y坐标取对数
%坐标轴取对数
clear,clc
figure(6)
x=0:0.1:10;
y=10.*x.^2
subplot(2,2,1)
plot(x,y)
subplot(2,2,2)
loglog(x,y)%对x,y取对数
subplot(2,2,3)
semilogx(x,y)%对x取对数
subplot(2,2,4)
semilogy(x,y)%对y取对数
自适应画图
使用fplot()函数绘图,根据函数要求自己调整精度
clear.clc
figure(7)
fplot(@(x)(cos(tan(pi.*x))),[-0.4,1.4])