20、MATLAB实用术语与绘图命令详解

MATLAB实用术语与绘图命令详解

1. 引言

MATLAB 作为一款强大的科学计算软件,拥有丰富的功能和实用的命令。了解其常用术语和绘图命令,对于高效使用 MATLAB 至关重要。本文将详细介绍 MATLAB 中的算术和逻辑运算符、符号以及绘图命令等内容。

2. 算术和逻辑运算符

2.1 基本算术运算符

  • + 和 - :用于对相同大小的变量进行加法或减法运算,变量可以是矩阵、向量或标量,也可对矩阵进行标量的加减运算。
A = [1 2; 3 4];
B = ones(2);
A + B
A - B
5 + 0.5
7 - 4

A = ones(3);
B = A + 2;
C = 3 - A;
  • * 和 / :用于变量的乘法或除法运算,但要保证运算在数学上可行。乘法运算要求第一个矩阵的列数等于第二个矩阵的行数,也可对矩阵进行标量的乘除运算。
4 * 3.2
4 / 2.3
A = [1 2; 3 4];
B = ones(2);
A * B
A / B

A = ones(3);
B = A/3;
C = A*4;

2.2 元素级运算符

  • . *:用于对相同大小的数组进行元素级乘法运算,常用于函数构造。
A = [4 3; 2 1];
B = [1 2; 3 4];
C = A.*B;

x = 1:5;
f = x.*sin(x);
g = (3*x+4).*(x+2);
  • ./ :用于对相同大小的数组进行元素级除法运算,常用于函数构造,也可处理参数为标量的情况。
A = [4 3; 2 1];
B = [1 2; 3 4];
C = A./B;

x = 1:5;
f = x./sin(x);
g = (3*x+4)./(x+2);

x = [1 2 3 4 5];
y = 2./x
  • :用于对相同大小的数组进行元素级幂运算,常用于函数构造,也可处理参数为标量的情况。
A = [4 3; 2 1];
B = [1 2; 3 4];
C = A.ˆB;

x = 1:5;
f = x.ˆ(x+1);
g = (3*x+4).ˆx;

x = 1:5;
y = 2.ˆx;
z = x.ˆ2;

2.3 其他运算符

  • * * :用于求解线性方程组 $Ax = b$,相当于 $x = A^{-1}b$。
A = [1 2; 3 4];
b = [2; 3];
x = A\b;
  • == :用于检查相等性,常用于逻辑语句中。
if i==7
    disp(' i is seven ')
else
    disp(' i is not seven ')
end

x = 1:12;
mod(x,3)==0
  • ∼= :用于检查不相等性,常用于逻辑语句中,但使用时需注意顺序变化可能导致的不同含义。
if i˜=7
    disp(' i is not seven ')
else
    disp(' i is equal to seven ')
end

x = 1:12;
mod(x,3)∼=0
  • >、>=、<、<= :用于检查大于、大于等于、小于、小于等于关系,常用于逻辑语句中,也可用于数组。
if i>7
    disp(' i is greater than seven ')
end
if i>=7
    disp(' i is greater than or equal to seven ')
end

x = 1:12;
x>7
x>=7

if i<7
    disp(' i is less than seven ')
end
if i<=7
    disp(' i is less than or equal to seven ')
end

x = 1:12;
x<7
x<=7
  • all、and、any、find、not、or、xor :这些都是逻辑运算符,用于不同的逻辑判断。
all(x.ˆ2>0)
x = 1:12;
all(x>0)

if and(x>7,x<9)
    disp(' x is between 7 and 9')
end
x = 1:12;
and(x>7,x<9)

any(x<0)
x = 1:12;
any(x>10)

x = 1:10;
[i]=find(x.ˆ2>26);

if not(x>=7)
    disp(' x is not greater than or equal to 7')
end
x = 1:12;
not(x>=7)

if or(x<7,x>9)
    disp(' x is less than 7 or greater than 9')
end
x = 1:12;
or(x<7,x>9)

x = [0 0 1 1];
y = [0 1 0 1];
xor(x,y)

3. 符号

3.1 连接与注释符号

  • :用于连接多行代码,但不能用于字符串内。
x = 1:10;
f = x.ˆ2+sqrt(x.ˆ2+1) ...
+ cos(x)./x;
  • % :表示该行剩余部分为注释,也可用于消除代码中某些行的执行,还可用于代码帮助信息。
% This code calculates the value
% of x times sin(x)
f = x.*sin(x);
% and the value of cos(xˆ2)
g = cos(x.ˆ2); % where x can be a vector.

3.2 输出与分隔符号

  • ; :用于抑制输出,可在语句末尾或命令集末尾使用,也可用于矩阵内行的结束。
a = ones(2);
b = ones(2); c = ones(2);
d1 = ones(2); d2 = ones(2)

A= [ 1 2; 3 4];
  • : :用于设置向量时界定值,也可用于引用矩阵的整行或整列。
x1 = 1:12
x2 = 1:2:13

A = [11 12 13; 21 22 23; 31 32 33];
A(1,:)
A(:,2)
A(:,:)
A(:,1:2)
A(1:2:3,:)
A(1:2,1:2)
  • , :用于分隔需要反馈的命令集,分隔矩阵特定行的元素,以及分隔函数的参数。
a = 1, b = 2
A = [1,2,3,4;5,6,7,8];
x = linspace(0,1,200);

3.3 其他符号

  • ’ ‘ :用于包围字符串,以及向各种函数传递参数。
a = 'Do robots dream of electronic sheep?'
x = 1:12;
y = x.ˆ2;
plot(x,y,'LineWidth',2)
  • :用于求矩阵的复共轭转置。
A = [1+2*i 2-i; 3 4+i];
B = A';
  • .’ :用于求矩阵的转置,建议在不涉及复矩阵问题时使用。
A = [1+2*i 2-i; 3 4+i];
B = A.';
  • (space) :可用于分隔矩阵元素,但不能用于分隔命令。
A = [1 2 3; 4 5 6];
B = [ 1:3 ; 3 2 1];
  • . :作为数学小数点,也用于文件名的分隔。
  • [ ] :用于包围向量或矩阵的元素。
A = [1 2 3 5 6 7];
B = [1 2 3;
3 4 5];
ms = ['Vector array' ' of strings'];
  • ( ) :用于包围数学表达式和函数的参数列表。
x= 1:12
y = 1./(x.ˆ2+1);
z = x.*sin(y);

4. 绘图命令

4.1 句柄的概念

在绘图前,需要了解句柄的概念,它是一个变量,可用于访问对象的属性。

x = 1:12; y = x.ˆ2;
h = plot(x,y)
get(h)
set(h,'MarkerSize',10)

4.2 基本绘图设置命令

  • axes :用于初始化一组坐标轴。
figure(1)
h = axes
figure(2)
h = axes('position',[0.2 0.2 0.6 0.6])
  • axis :用于设置绘图的范围,可用于二维或三维绘图,还有其他变体。
x = 0:pi/20:pi; y = sin(x);
plot(x,y)
axis([-pi/2 pi/2 -1 1])

t = linspace(0,2*pi);
x = cos(t);
y = sin(t);
z = t;
plot3(x,y,z)
grid on
axis([-1.5 1.5 -1.5 1.5 -pi/2 2*pi])

axis off
axis equal
axis square
axis tight

4.3 绘图类型命令

  • bar :用于生成数据的条形图。
x = [1 2 3 4 5];
y = [13 12 9 8 15];
bar(x,y)
  • barh :用于生成数据的水平条形图。
x = [1 2 3 4 5];
y = [13 12 9 8 15];
barh(x,y)
  • hist :用于生成数据的直方图,可指定 bins 的数量。
y = [1 2 3 43 32 54 33 2 4 53 5 63 21 1 5 2];
hist(y)
  • loglog :用于生成数据的自然对数对自然对数的图形。
x = [1e-3 1e-2 1e-1 1 1e1 1e2];
y = [10e-3 10e-2 10e-1 10 10e1 10e2];
loglog(x,y)
  • plot :用于设置图形和绘制数据,有多种变体。
x = -1:0.1:1;
y = x.ˆ3;
plot(x,y)
plot(x,y,'go')
plot(x,y,'LineWidth',2)
  • plot3 :用于绘制三维直线图。
x = 0.:0.1:3.0;
y = x.ˆ2;
z = 3*x+1;
plot3(x,y,z)
grid on

4.4 图形操作命令

  • clf :用于清除当前图形。
clf
  • close :用于关闭图形,有多种语法。
close
close(4)
close all
close(h)
  • figure :用于将请求的图形置于前台,若不存在则创建。
figure
figure(3)
figure(h)
  • gca :返回当前坐标轴的句柄,可用于显示和修改其属性。
x = 1:12; y=x.ˆ2;
plot(x,y)
h = gca
get(h)
  • gcf :返回当前图形的句柄,可用于显示和修改其属性。
x = 1:12; y = x.ˆ2;
plot(x,y)
h = gcf
get(h)
  • get :用于提取对象的特定属性。
x = 1:12; y = x.ˆ2;
plot(x,y)
h = gcf
a = gca
get(h,'Color')
get(a,'YTick')
  • ginput :用于获取鼠标在当前图形上点击的坐标,可用于获取根的初始估计值。
x = 0:pi/20:4*pi;
y = sin(x);
plot(x,y)
[xp,yp]= ginput
n = 10;
[xp,yp] = ginput(n)
  • gplot :用于使用顶点和邻接矩阵绘制图形。
xy = [0 0;1 0;
1 1; 0.5 0.5];
A = [0 1 0 0;
1 0 1 1;
0 1 0 1;
0 1 1 0];
gplot(A,xy,'-*')
axis equal
axis off
  • grid :用于在图形中添加或关闭网格。
grid on
grid off
grid
  • hold :用于停止覆盖当前图形,可用于在图形上绘制多条线。
hold on
hold off
hold

x = 0:pi/20:pi;
y = sin(x);
z = cos(2*x);
clf
plot(x,y)
hold on
plot(x,z)
hold off
  • legend :用于为图形添加图例,描述线条。
x = 1:10;
y = x.ˆ2;
z = sin(x);
plot(x,y,x,z)
legend('xˆ2','sin x', 0)
  • semilogx :用于生成 $y$ 对 $\ln x$ 的图形。
x = linspace(1,100,30);
semilogx(x,log(x))
  • semilogy :用于生成 $\ln y$ 对 $x$ 的图形。
x = linspace(1,100,30);
semilogy(log(x),x)
  • set :用于定义对象的特定属性。
x = 1:12;
y = 1./x;
h = plot(x,y)
set(h,'LineWidth',4)
  • subplot :用于设置图形的子元素,并指定当前子图。
subplot(4,2,3)
for j = 1:8
    subplot(4,2,j)
    text(0.5,0.5,int2str(j),'FontSize',24)
end
  • text :用于为图形添加有用的标签。
x = -1:0.1:1;
y = sin(x.ˆ2);
plot(x,y)
h = text(0,0.5,'sin xˆ2')
set(h,'FontSize',18)
  • title :用于设置图形或子图的标题。
x = 0.0:0.1:5.0;
y = 1-exp(-x);
plot(x,y)
title('f(x) = 1-eˆ{-x}','FontSize',18)
  • xlabel, ylabel :用于设置 $x$ 和 $y$ 轴的文本。
x = linspace(-2,2,30);
y = (x - 3).ˆ2;
plot(x,y)
hx = xlabel('x values')
hy = ylabel('y = (x-3)ˆ2')
set(hx,'FontSize',16)
set(hy,'FontSize',16)

4.5 绘图命令总结表格

命令 功能
axes 初始化一组坐标轴
axis 设置绘图范围
bar 生成条形图
barh 生成水平条形图
clf 清除当前图形
close 关闭图形
figure 显示或创建图形
gca 返回当前坐标轴句柄
gcf 返回当前图形句柄
get 提取对象属性
ginput 获取鼠标点击坐标
gplot 绘制图形
grid 添加或关闭网格
hold 停止覆盖图形
legend 添加图例
loglog 绘制自然对数图形
plot 绘制二维图形
plot3 绘制三维图形
print 输出图形到文件
semilogx 绘制 $y$ 对 $\ln x$ 图形
semilogy 绘制 $\ln y$ 对 $x$ 图形
set 定义对象属性
subplot 设置子图
text 添加标签
title 设置标题
xlabel, ylabel 设置坐标轴文本

4.6 绘图操作流程图

graph LR
    A[开始绘图] --> B[创建图形 figure]
    B --> C[初始化坐标轴 axes]
    C --> D[设置绘图范围 axis]
    D --> E{选择绘图类型}
    E -- bar --> F[绘制条形图 bar]
    E -- barh --> G[绘制水平条形图 barh]
    E -- plot --> H[绘制二维图 plot]
    E -- plot3 --> I[绘制三维图 plot3]
    E -- hist --> J[绘制直方图 hist]
    E -- loglog --> K[绘制对数图 loglog]
    E -- semilogx --> L[绘制 y 对 ln x 图 semilogx]
    E -- semilogy --> M[绘制 ln y 对 x 图 semilogy]
    F --> N[添加网格 grid]
    G --> N
    H --> N
    I --> N
    J --> N
    K --> N
    L --> N
    M --> N
    N --> O[添加图例 legend]
    O --> P[添加标签 text]
    P --> Q[设置标题 title]
    Q --> R[设置坐标轴文本 xlabel, ylabel]
    R --> S[保存图形 print]
    S --> T[结束绘图]

通过以上对 MATLAB 算术和逻辑运算符、符号以及绘图命令的详细介绍,相信你能更好地掌握 MATLAB 的使用,进行更高效的科学计算和图形绘制。

5. 运算符使用注意事项

5.1 矩阵运算规则

在使用 * / 进行矩阵乘法和除法运算时,要特别注意矩阵维度的匹配。乘法运算要求第一个矩阵的列数等于第二个矩阵的行数,否则 MATLAB 会报错。例如:

A = [1 2; 3 4];
B = [1 2 3; 4 5 6];
% 以下运算会报错,因为 A 的列数 2 不等于 B 的行数 3
C = A * B; 

5.2 元素级运算符与普通运算符的区别

普通运算符 * / 进行的是矩阵的乘法和除法运算,而元素级运算符 .* ./ 是对数组的对应元素进行运算。在函数构造中,要根据需求正确选择运算符。例如,计算 $f(x) = x \sin(x)$ 时,需要使用元素级乘法运算符 .*

x = 1:5;
f = x.*sin(x);

5.3 逻辑运算符的使用场景

逻辑运算符 == ∼= > >= < <= 常用于条件判断语句中,帮助程序根据不同的条件执行不同的操作。例如,判断变量 i 是否大于 7:

if i > 7
    disp(' i is greater than seven ');
end

同时,逻辑运算符也可用于数组,返回一个布尔数组。

6. 符号使用技巧

6.1 注释的重要性

注释符号 % 在 MATLAB 代码中起着至关重要的作用。它不仅可以帮助开发者理解代码的功能和逻辑,还可以在调试代码时暂时禁用某些行。例如:

% 这是一个计算 x 乘以 sin(x) 的代码
f = x.*sin(x);
% 暂时禁用下面这行代码
% g = cos(x.ˆ2); 

6.2 分号的使用

分号 ; 用于抑制输出,在批量初始化变量或执行不需要显示结果的操作时非常有用。例如,同时初始化多个矩阵:

a = ones(2);
b = ones(2); 
c = ones(2);
d1 = ones(2); 
d2 = ones(2); % 只有 d2 的初始化结果会显示

6.3 冒号的灵活运用

冒号 : 在设置向量和引用矩阵元素时非常灵活。可以用于创建等差数列,也可以引用矩阵的整行或整列。例如:

% 创建从 1 到 10 的等差数列
x = 1:10; 
A = [1 2 3; 4 5 6; 7 8 9];
% 获取 A 的第一行
first_row = A(1, :); 

7. 绘图命令的综合应用

7.1 多图绘制示例

在一个图形窗口中绘制多个子图,可以使用 subplot 命令。以下是一个绘制 4 行 2 列子图的示例:

for j = 1:8
    subplot(4, 2, j);
    text(0.5, 0.5, int2str(j), 'FontSize', 24);
end

7.2 图形美化技巧

通过设置图形的属性,可以使图形更加美观和易读。例如,使用 set 命令设置线条宽度、颜色等属性:

x = -1:0.1:1;
y = x.ˆ3;
h = plot(x, y);
set(h, 'LineWidth', 2, 'Color', 'r'); % 设置线条宽度为 2,颜色为红色

7.3 图形保存与输出

使用 print 命令可以将图形输出到文件,支持多种文件格式,如 Postscript、JPEG 等。例如,将当前图形保存为 JPEG 格式:

print -djpeg90 output.jpg

8. 总结与展望

8.1 内容总结

本文详细介绍了 MATLAB 中的算术和逻辑运算符、符号以及绘图命令。算术和逻辑运算符包括基本算术运算符、元素级运算符和其他运算符,用于进行各种数学运算和逻辑判断;符号在代码的连接、注释、输出控制等方面发挥着重要作用;绘图命令则提供了丰富的功能,可用于创建各种类型的图形。

8.2 学习建议

对于初学者来说,建议先掌握基本的运算符和符号的使用,再逐步学习绘图命令。通过实际编写代码和调试,加深对这些知识的理解和掌握。同时,可以参考 MATLAB 的官方文档和在线教程,获取更多的帮助和示例。

8.3 未来应用展望

MATLAB 在科学计算、工程设计、数据分析等领域有着广泛的应用。随着技术的不断发展,MATLAB 的功能也在不断完善和扩展。未来,我们可以利用 MATLAB 进行更复杂的数据分析、机器学习和深度学习等任务。

8.4 关键知识点表格

类别 关键知识点 示例代码
算术和逻辑运算符 + - * / .* ./ \ == ∼= > >= < <= all and any find not or xor 见前文各运算符示例
符号 ... % ; : , ' ' ' .' (space) . [ ] ( ) 见前文各符号示例
绘图命令 axes axis bar barh clf close figure gca gcf get ginput gplot grid hold legend loglog plot plot3 print semilogx semilogy set subplot text title xlabel ylabel 见前文各绘图命令示例

8.5 学习流程总结图

graph LR
    A[学习基础] --> B[掌握运算符和符号]
    B --> C[学习绘图命令]
    C --> D[实践应用]
    D --> E[优化与拓展]
    E --> F[探索高级应用]

通过对这些内容的学习和实践,相信你能够更加熟练地使用 MATLAB 进行科学计算和图形绘制,为你的学习和工作带来便利。

【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开研究,重点探讨其系统建模控制策略,结合Matlab代码Simulink仿真实现。文章详细分析了无人机的动力学模型,特别是引入螺旋桨倾斜机构后带来的全驱动特性,使其在姿态位置控制上具备更强的机动性自由度。研究涵盖了非线性系统建模、控制器设计(如PID、MPC、非线性控制等)、仿真验证及动态响应分析,旨在提升无人机在复杂环境下的稳定性和控制精度。同时,文中提供的Matlab/Simulink资源便于读者复现实验并进一步优化控制算法。; 适合人群:具备一定控制理论基础和Matlab/Simulink仿真经验的研究生、科研人员及无人机控制系统开发工程师,尤其适合从事飞行器建模先进控制算法研究的专业人员。; 使用场景及目标:①用于全驱动四旋翼无人机的动力学建模仿真平台搭建;②研究先进控制算法(如模型预测控制、非线性控制)在无人机系统中的应用;③支持科研论文复现、课程设计或毕业课题开发,推动无人机高机动控制技术的研究进展。; 阅读建议:建议读者结合文档提供的Matlab代码Simulink模型,逐步实现建模控制算法,重点关注坐标系定义、力矩分配逻辑及控制闭环的设计细节,同时可通过修改参数和添加扰动来验证系统的鲁棒性适应性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值