【Matlab】二维曲线

二维曲线

plot函数

调用格式一

plot(x, y):x和y分别用于存储x坐标和y坐标数据,x和y均为向量。

调用格式二

plot(x):x存储纵坐标数据,以x中数据对应索引(即1、2、3……)为横坐标。

当x为复数构成的向量时,则以横坐标为实部,纵坐标为虚部进行绘制。

调用格式三

plot(x, A):x是向量,A是矩阵。

如果矩阵A的列数等于x的长度,则以向量x为横坐标,以A的每个行向量为纵坐标绘制曲线,曲线的条数等于A的行数,即A的每一行对应一条曲线。

如果矩阵A的行数等于x的长度,则以向量x为横坐标,以A的每个列向量为纵坐标绘制曲线,曲线的条数等于A的列数,即A的每一列对应一条曲线。

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S9KbsI2W-1655003587690)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827094031156.png)]

调用格式四

plot(A, B):A和B为同型矩阵。以A、B对应列元素为横、纵坐标分别绘制曲线曲线条数等于矩阵的列数。

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PtxFfj6x-1655003587692)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827094731216.png)]

调用格式五

plot(x1, y1, x2, y2, ……, xn, yn):每一向量对xi和yi构成一组数据点的横、纵坐标,绘制一条曲线。

调用格式六

plot(x, y, 选项):选项为字符串,可以选择线型、颜色、数据点标记。

补充:plot(x, y, 'rd', 'markersize', 24)在绘制散点时,可以设置点的大小。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5NHOR5LM-1655003587692)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827102544981.png)]

fplot函数

为解决一些函数存在震荡的情况,横坐标上的取点稀疏不同,采用fplot函数可以根据光滑程度自动取点绘制,使图形更可观。

调用格式一

fplot(f, lims, 选项):f代表一个函数,通常采用函数句柄的形式。lims为x轴的取值范围,用二元向量[xmin,xmax]描述,默认值为[-5,5]。选项定义与plot函数相同。

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IlVUNuhL-1655003587692)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827103013843.png)]

调用格式二

fplot(funx, funy, tlims, 选项):funx、funy代表函数,通常采用函数句柄的形式。tlims为参数函数funx和funy的自变量的取值范围,用二元向量[tmin,tmax]描述。一般用于参数方程的绘制。

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n5GXt2fk-1655003587693)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827105824220.png)]

ezplot函数

这个函数主要针对隐函数的绘制,但同样也可以绘制显函数和参数方程。

显函数y=f(x),ezplot函数的调用格式为ezplot(f, [xmin, xmax])。

隐函数f(x,y)=0,ezplot函数的调用格式为ezplot(f, [xmin, xmax] , [ymin, ymax]),或ezplot(f, [xmin, xmax, ymin, ymax])。

参数方程x=x(t),y=y(t),ezplot函数的调用格式为ezplot(x, y, [tmin, tmax])。

%% yf(x,y) = x^2sin(x+y^2) + y^2e^x + 6cos(x^2+y) = 0
f = @(x, y) x.^2.*sin(x+y.^2) + y.^2.*exp(x) + 6*cos(x.^2+y);

h1 = ezplot(f, [-6 6]);
title('test-1')

figure(2);
h2 = ezplot('x.^2.*sin(x+y.^2) + y.^2.*exp(x) + 6*cos(x.^2+y)', [-6 6]); % 与上面等价
title('test-2')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ewa2avZ-1655003587694)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210906164852087.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tAoepQpx-1655003587694)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210906164914979.png)]

属性设置

set函数

Matlab给每种对象的每一个属性规定了一个名字,称为属性名,属性名的取值称为属性值。例如,LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以为’-‘、’-.‘、’–‘、’:‘或’none’。

调用格式:set(句柄, 属性名1, 属性值1, 属性名2, 属性值2, ……)

x=linspace(0,2*pi,100);

y1=cos(x);

y2=cos(x+pi/3);

y3=cos(x+pi/2);

h=plot(x,y1,x,y2,x,y3);

set(h,{'Color'},{'r';'g';'b'}, {'LineStyle'}, {'--';'-.';':'}, {'LineWidth'}, {1;2;3}) %设置颜色、线型和线宽
% 注意:
% 不要忘记第一个参数为句柄函数
% 当要对多个对象同时设置同一属性的不同属性值时,则属性名和属性值都必须通过大括号括起来,且多个属性值之间由分号隔开;
% 当属性值的可选值为字符串时,大括号内应为字符串,当属性值的可选值为数值时,大括号内应为数值,如'Color'属性与'LineWidth'属性的区别

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C8SubRu7-1655003587695)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210906171702233.png)]

更多用法可以参考,[博客](Matlab中的set函数用法_样young的博客-CSDN博客_matlab set函数用法)或通过在matlab中执行help set查看文档。

图形标注

title函数

title(S):S为字符串,图形标题。

title({S1, S2, ……}):多行标题。

x=linspace(0,2*pi,100);
plot(x, sin(x))
title({'matlab', 'y = sin(x)'})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mUsmu5FW-1655003587695)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827114634895.png)]

标题字符串中可以使用LaTex格式控制符;特殊字符REF

title(图形标题, 属性名, 属性值):

属性名可选:'Color''FontSize';对应的属性值分别为字符串型(与plot函数中“选项”的可选值一致)和正整数。

x=linspace(0,2*pi,100);
plot(x, sin(x))
title({'{\lambda} && {\sigma}', 'y = sin(x)'}, 'Color', 'r', 'FontSize', 24)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LrjMrrxs-1655003587695)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827115603544.png)]

xlabel函数和ylabel函数

xlabel(S):S为x轴说明。

ylabel(S):S为y轴说明。

x=linspace(0,2*pi,100);
plot(x, sin(x))
xlabel('0 \leq x \leq 2\pi')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IskdxNpI-1655003587696)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827115844187.png)]

text函数和gtext函数

text(x, y, S):在(x, y)位置标注S字符串。

gtext(S):执行该函数后,十字光标跟随鼠标移动,单击鼠标即可将文本放在十字光标处。

x=linspace(0,2*pi,100);
plot(x, sin(x), [2 2*pi], [sin(2) 0], 'r*')
text(2*pi, 0, ' 2\pi')
text(2, sin(2), '  \leftarrow sin(2)')

legend函数

legend(S1, S2, ……):为第一条曲线加图例、为第二条曲线加图例、……。

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XMMXhz9w-1655003587696)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827143515173.png)]

坐标轴控制和图窗控制

axis函数

axis([xmin, xmax, ymin]):设置横坐标轴和纵坐标轴的范围。

axis([xmin, xmax, ymin, ymax, zmin, zmax]):设置x、y、z轴的坐标范围。

axis equal:纵、横坐标轴采用等长刻度。

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

axis auto:使用默认设置。

axis off:取消坐标轴。

axis on:显示坐标轴。

x = [0 1 1 0 0];
y = [0 0 1 1 0];
plot(x, y)
axis([-0.1 1.1 -0.1 1.1])
axis equal;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u6dwWeP6-1655003587697)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827144013988.png)]

grid函数

grid on:坐标系添加网格

grid off:坐标系删除网格

grid:两种状态切换。

box函数

box on:坐标系添加边框。

box off:坐标系取消边框。

box:两种状态切换。

hold函数

hold on:允许在已存在的图形的图窗上添加其他的图形。

hold off:取消在已存在的图形的图窗上添加其他的图形。

hold:两种状态切换。

在matlab中,一个程序中两个plot绘制两个曲线,会分别在两个图窗内显示,如果要想将两个曲线显示在一个坐标系下(一个图窗下),则可以通过hold on命令控制。

subplot函数

子图:同一图形窗口中的不同坐标系下的图形称为子图。

subplot(m, n, p):m和n指定将图形窗分成 m × n m×n m×n个绘图区,p指定当前活动区。区号按行优先顺序排列。

x=linspace(0,2*pi,100);

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])

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c8xfThYh-1655003587697)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827145004539.png)]

其他形式的二维曲线

对数坐标

semilogx(x1, y1, 选项1, x2, y2, 选项2, …):对x坐标点取常用对数(底为10)后生成的对数坐标函数。x 轴为对数刻度,y 轴为线性刻度。

semilogy(x1, y1, 选项1, x2, y2, 选项2, …):对y坐标点取常用对数(底为10)后生成的对数坐标函数。x 轴为线性刻度,y 轴为对数刻度。

loglog(x1, y1, 选项1, x2, y2, 选项2, …):x、y坐标点均取对数,且x、y轴均为对数刻度。

x=0:0.1:10;
y=1./x;

subplot(2,2,1);
plot(x, y)
title('plot(x, y)'); 

subplot(2,2,2);
semilogx(x, y)
title('semilogx(x, y)'); 
grid on

subplot(2,2,3);
semilogy(x, y)
title('semilogy(x, y)'); 
grid on

subplot(2,2,4);
loglog(x, y)
title('loglog(x, y)'); 
grid on

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-roNpNQJl-1655003587698)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827152622265.png)]

可以看出,网格是不均匀的,以semilogx函数为例,直观上其x轴刻度的 1 0 − 1 10^{-1} 101 1 0 0 10^0 100 1 0 0 10^0 100 1 0 1 10^1 101长度是一致的,但其实右端点减去左端点就可以发现理论上长度是不同的,而这个函数就是为了让用户方便直观上观察随着幂的变化纵坐标如何变化,横坐标也是按幂步长为1来进行标注的,本质上显示的范围还是不变的,比如上面的例子中x范围是0 ~ 10,步长为0.1,因为0无意义所以最小取到0.1,即0.1 ~ 10,又即 1 0 − 1 10^{-1} 101 ~ 1 0 1 10^1 101,正如x轴坐标所显示的。

极坐标

polar(theta, rho, 选项):theta为极角,rho为极径,选项的内容与plot函数相同。

t = linspace(0, 2*pi, 100);
r = 1-sin(t);
polar(t, r)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PuE5YGHb-1655003587698)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827155729466.png)]

若极角 + π / 2 +\pi/2 +π/2,则图形顺时针旋转 90 ° 90° 90°;若极角 − π / 2 -\pi/2 π/2,则图形逆时针旋转 90 ° 90° 90°

t = linspace(0, 2*pi, 100);
r = 1-sin(t)
polar(t, r)

hold on
t1 = t - pi/2;
r1 = 1-sin(t1)
polar(t, r1)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q9tSJiMe-1655003587698)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827160558524.png)]

统计图

条形图

bar(A, S):S用于指定分组排列模式,可选值为簇状分组“grouped”和堆积分组“stacked”, 默认为“grouped”;若A为向量,则以下标为横坐标,对应值为纵坐标;若A为矩阵,则以列号为横坐标,同一列的数为一组,按照S指定的模式绘制在一组内。

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xuZocY8J-1655003587699)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827161319173.png)]

bar(x, y, S):x存储横坐标,y存储纵坐标,可为矩阵也可为向量,规则同上,S同上。

x = [2015 2016 2017];
y = [68 80 115 98 102;
    120 78 69 90 112;
    110 99 79 88 93];
bar(x, y)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hcazJD6T-1655003587699)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827161627460.png)]

barh(A, S):与bar(A, S)用法一致。

barh(x, y, S):与bar(x, y, S)用法一致。

唯一的不同是barh是水平绘制,如下:

x = [2015 2016 2017];
y = [68 80 115 98 102;
    120 78 69 90 112;
    110 99 79 88 93];
barh(x, y)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gvir0JLn-1655003587699)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827161839272.png)]

直方图

hist(y):每个小区间长度为1,统计每个区间内的数的个数作为纵坐标。

hist(y, x):x为向量,其形式为xmin:step:xmax,表示每个小区间的长度为step。

y=randn(500,1);

subplot(2,1,1);
hist(y);
title('高斯分布直方图');

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mq1q7tdF-1655003587700)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827162900177.png)]

rose(theta, x):参数theta用于确定每一区间与原点的角度,选项x用于指定区间的划分个数,默认20个。统计区间内的个数。

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zucTbRIp-1655003587700)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827163329125.png)]

扇形图

pie(x, explode):参数x存储待统计数据,通常x为向量,x的每个元素对应一个扇形区域,每个扇形区域的大小反映x所占比重;选项explode控制图块的显示模式,explode为x同型向量,与x相对应的部分非零为突出显示,显示为与整个饼状图分离,若向量全零,则整个饼状图为一个整体。饼状图按x顺序逆时针排列。

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z3qWI13b-1655003587700)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827164147747.png)]

“location”用于设置legend位置,若省略则会覆盖部分扇形区域,因此设置为“eastoutside”。

散点图

scatter(x, y, 选项, ‘filled’):参数x、y用于定位数据点,选项用于指定线型、颜色、数据点标记,与plot一致,'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);
subplot(121)
scatter(x, y, 'rd', 'filled')
subplot(122)
plot(x, y, 'rd')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7f9aRfAt-1655003587705)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827165408297.png)]

发现scatter绘制散点和plot绘制散点类似。

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')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mirxjjWy-1655003587706)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827165317139.png)]

矢量图

quiver(x, y, u, v):(x, y)指定矢量起点,(u, v)指定矢量终点。

A=[4,5]; B=[-10,0];C=A+B;
hold on;
quiver(0,0,A(1),A(2));
quiver(0,0,B(1),B(2));
quiver(0,0,C(1),C(2));
text(A(1),A(2),'A');
text(B(1),B(2),'B');
text(C(1),C(2),'C');
axis ([-12,6,-1,6])
grid on

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7LRe9M8O-1655003587706)(C:\Users\23343\AppData\Roaming\Typora\typora-user-images\image-20210827165848984.png)]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不牌不改

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值