MATLAB基础绘图操作

本文是笔者在学习MATLAB过程中,针对网上资料所作的一些总结,后续还会补充完善

1 基础用法介绍

  1. 在软件中调整工作区
  1. 语句后面加分号,不是交互式;不加分号,会同时打印结果,是交互式。建议在调试程序时不加分号,方便观察结果,在实际运行程序时加分号,方便观察结果。
  2. 变量赋值不需要提前声明,直接使用;字符串要使用单引号括起来
  3. clear清除变量clc清除屏幕
  4. MATLAB可以在命令行编程,也可以在文件中编程。文件中编程需要保存文件到当前路径,文件名仅包含字母、下划线、数字,不能以数字开头,且以.m为后缀,运行程序直接在命令行中输入文件名回车即可。
  5. 在终端中打印字符串用disp函数。但disp无法实现C语言中的printf组合打印功能,可以使用sprintf函数先将要打印的字符组织好。

补充关于矩阵向量的内容:

  • 向量的转置
    使用 ’ 运算符。若A为列向量,则A’为行向量。

  • 向量的截取
    假如一个行向量A长度为100,可以通过 B=A(0:29) 来获取向量A的前30位。

  • 计算矩阵行列数
    使用size函数,size(A,1)该语句返回的是矩阵A的行数, size(A,2) 该语句返回的是矩阵A的列数

  • 提取矩阵行列
    提取矩阵A的第i行:A(i, : );
    提取矩阵A的第j列:A(:, j );

2 MATLAB绘图

2.1 二维视图

2.1.1 plot函数用法

在MATLAB中绘制二维图形一般用plot函数,plot接收的参数是向量,然后根据传入的参数画点,使用直线把点连接起来,如果点足够密集,展示出来后,在我们眼睛看来,画出来就是一个曲线。plot函数的基本格式为:

  • plot(y)
  • plot(x, y)
  • plot(x1, y1, x2, y2, …)

第一种没有输入x的情况,绘制出来的图形的横坐标将默认以1为单位;第二种为横坐标以设定x为范围和步进;第三种的参数成对输入,同时绘制多条曲线。

plot函数可以规定图形的形状、颜色等属性,若不指定则依次使用表中属性,plot函数的属性参数表如图:

在使用MATLAB绘图之前,我们需要先用figure创建一个图像窗口,下面依次列举上述三种情况的实例:

  • plot函数只规定y和属性:
x = 0:0.01:20;			%给定x范围和步进
f = sin(x);				%声明函数
figure;					%打开一个绘图窗口
plot(f, '--c');			%画图,虚线、青色
title('y=sinx o--c');	%打印标题
  • plot函数规定x、y和属性:
x = 0:0.01:20;			%给定x范围和步进
f = sin(x);				%声明函数
figure;					%打开一个绘图窗口
plot(x, f, '--c');		%画图,虚线、青色
title('y=sinx o--c');	%打印标题
  • plot函数同时绘制多条曲线:
x = -2*pi:0.01:2*pi;			%给定x范围和步进
f1 = sin(x);					%声明函数1
f2 = cos(x);					%声明函数2
figure;							%打开一个绘图窗口
plot(x,f1, '--b', x, f2, '--r');%画图,f1为虚线蓝色,f2为虚线红色
title('sinx cosx');			    %打印标题

注:1、2其实就是在使用plot函数绘图时有没有指明横坐标的问题,若像1这样未指明横坐标,那么横坐标最小以1为单位,对于一些精度要求不高的场合可以这么做。

2.1.2 绘制子图

使用subplot()函数可以将一个figure分为多个区块,实现在一个figure下绘制多张子图,subplot函数的格式为subplot(m, n, p),m和n分别表示将整个figure划分为m行n列,p表示子图位置在从左往右、从上往下数的第p个地方。示例代码如下:

x = 0:0.1:2*pi;		%给定x的范围和步进
f1 = sin(x);		%声明函数1
f2 = cos(x);		%声明函数2

figure;				%打开一个绘图窗口
subplot(2, 2, 1);	%figure划分为22列,子图位置为1即第一个
plot(x, f1);		%绘制曲线
title('f1=sinx');	%打印标题

subplot(2, 2, 2);	%figure划分为22列,子图位置为2即第二个
plot(x, f2);		%绘制曲线
title('f2=cosx');	%打印标题

2.1.3 其它

  • grid on 开启框线,该选项默认关闭
x = 0:0.01:20;		%给定x范围和步进
f = sin(x);			%声明函数
figure;             %打开一个绘图窗口
plot(x, f, '--b');	%画图,虚线、青色
grid on;			%开启框线
box off;			%关闭边框
title('y=sinx');	%打印标题
  • box off 关闭边框
  • polar()绘制极坐标
  • 同一figure内的同一位置重复绘图,使用hold on保存上一张图像,否则原图会被覆盖

2.2 三维视图

2.2.1 plot3函数

同plot函数一样,在传入的三维矩阵中找出三维空间中的点,然后使用线连接起来,所以plot3函数画的是空间曲线,示例如下:

t = 0:0.1:10*pi;		%给定t的范围和步进
x = sin(t);				%参数x
y = cos(t);		        %参数y
z = t;					%参数z
figure;					%打开一个绘图窗口
plot3(x, y, z);			%绘制曲线
title('弹簧状曲线');		%打印标题
xlabel('x轴');			%标记x轴名称
ylabel('y轴');			%标记y轴名称
zlabel('z轴');			%标记z轴名称

2.2.2 meshgrid()和mesh()函数——绘制三维曲面的网格图

plot3函数只能绘制空间曲线,如果想绘制空间曲面可以选择 meshgrid()和mesh()函数。meshgrid接受两个参数,a 和 b ,每个参数(a 或者 b)都是一个一维数组(严格来讲,叫做向量),假设 a 中有126个元素(即126个区间点,记为na),b 中有63个元素(即63个区间点记为nb),那么,结果x 和 y 均是 nb 行 na 列的矩阵(二维数组),并且对于 x ,每一行均为 a 的复制,共nb行(即 x 中有63行 a),而对于 y,每一列均为 b (的转置)的复制,共na列(即 y 中有126列 b)。

2.2.3 surf()函数——绘制三维曲面颜色填充图

上面说的mesh()函数绘制出来的图形其实是一个个方格,而surf()函数可以绘制真正的曲面,方法与mesh()几乎一致,现比较两种方法的结果:

[x, y] = meshgrid(-2*pi:0.1:2*pi, -2*pi:0.2:2*pi);
z = sin(x) + cos(x);
figure;
subplot(2, 1, 1);
surf(x, y, z);      % surf画曲面
title('surf');
subplot(2, 1, 2);
mesh(x, y, z);      % mesh画方格
title('mesh');
  • 16
    点赞
  • 148
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值