MATLAB入门到精通(二):基本语句及绘图

合集如下:
MATLAB入门到精通(一):简介及数据类型
MATLAB入门到精通(二):基本语句及绘图
MATLAB入门到精通(三):常用函数及数学应用


六、编程语句

6.1 选择结构

6.1.1 if 结构

if结构的基本结构如下:

if 判断条件1
	执行语句1
elseif 判断条件2
	执行语句2
...
	...
else
	执行语句n
end

具体实例:

% 判断数字是正数、负数还是0
a=1;
if a>0
    disp('正数');
elseif a<0
    disp('负数');
else
    disp('0');
end
6.1.2 switch结构

if结构的基本结构如下:

switch (判断条件)
case 结果1
	执行语句1
...
	...
otherwise,
	执行语句n
end

其中otherwise是可选的,当所有的结果都不符合时就会被执行。
具体实例:

switch (1+1)
    case 1
        disp('1+1=1');
    case 2
        disp('1+1=2');
    otherwise
        disp('我什么都不知道');
end
6.1.3 try/catch结构

try/catch结构是一种特殊的条件语句,只有发生异常时catch中的内容才会执行。
try/catch的基本结构如下:

try
	语句1
	语句2
	...
catch
	语句n
	...
end

具体实例如下:

try
    a=1/0;
catch
    disp('我在写bug');
end

6.2 循环结构

6.2.1 while 循环

while循环是一个重复次数不确定的语句块,基本结构如下:

while 条件
	语句1
	语句2
	...
end

如果条件非零,则循环内的语句执行,直到条件为0。具体实例如下:

%计算3的阶乘
result=1;
n=3;
while n>1
    result=result*n;
    n=n-1;
end
disp(result);
6.2.2 for 循环

for 循环是指定循环次数的语句块,其基本结构如下:

for index=x:s:n %x:起始位置;s:步长;n:终止位置
	语句1
	...
	语句n
end

具体实例如下:

%计算从1加到100
n=100;
result=0;
for x=1:n
    result=result+x;
end
disp(result)

6.3 continue和break语句

continue和break语句可以控制跳出循环。
continue:终止本次循环,执行下一次循环。
break:终止所在循环的整个循环语句。

七、M脚本文件

这里介绍的可能有点不及时了,上面已经使用过M脚本文件了。

7.1 什么是M脚本文件

(1)该文件中的指令形式和前后位置与解决同一个问题时在指令窗口输入的那组指令没有任何区别。
(2)MATLAB在运行这个文件时,只是简单地从文件中读取一条条指令,送到MATLAB中执行。
(3)文件扩展名“m”。


7.2 M脚本文件常用的一些函数

函数名 描述
beep 让计算机尖叫
disp(变量) 只显示结果,不显示变量名
echo 在M脚本文件被执行时,控制M脚本文件内容是否在Command窗口中显示
input 提示用户输入数据
keyboard 临时终止M文件的执行,让键盘获得控制权,回车键取消。
pause 暂停,直到用户按下任意键或到指定时间后为止
waitforbuttonpress 暂停,直到用户按下鼠标或其他按键为止

7.3 变量的一些介绍

Matlab的变量不需要事先定义。Matlab能识别一般常用的加减乘除运算,对于简单地计算可以字命令窗口中输入表达式,摁【Enter】键即可完成。Matlab会自动的将运算结果存入默认变量 ans 中,并显示其结果(如果表达式后加上“;”,则不会显示),用户可自行设定自己的变量。

下面介绍一些Matlab中的特殊变量:

变量名 变量含义
ans Matlab中默认变量
pi 圆周率π
eps 返回某数的最小浮点数精度
inf 无穷大
NaN 非数
i(j) 复数中的虚数单位
nargin 所用函数的输入变量数目
nargout 所用函数的输出变量数目
realmin 最小可用正实数
realmax 最大可用正实数

八、M函数文件

函数能够把大量有用的数学公式或者命令集中在一个模块中,因此,他们对某些复杂问题有很强的解决能力。

8.1 M函数文件的构建规则

下面罗列一些M函数文件的标准
(1)M函数文件名必须和function声明行中的函数名一致。实际上,当用户输入一个M函数并执行时,Matlab寻找的是以这个函数的名字命名的.m文件,而不是function声明中的函数名。
(2)M函数的命名规则:

  • 以字母开头,后面任意的字母,数字,下划线的组合。
  • 不能超过63个字符,超出则不显示。
  • 与文件名一致

(3)介于函数声明和第一行命令之间的若干行注释一般作为函数的帮助文档,当使用help命令查看时将显示这一部分内容。

下面通过一个例子说明规则:
该文件为 myFunction命名的M函数文件。

function result = myFunction(var) %第一行位函数的声明
% 声明和命令之间的为函数帮助文档部分
%求正切的方法
% result 表示返回的结果变量,可多个返回值(中括号),调用函数得到的就是这个值
% var 表示函数的参数列表
result=tan(v); % 函数的主题部分

8.2 函数句柄

介绍一种函数的高级使用方式:函数句柄。一句话介绍函数句柄就是:将一个函数封装成一个变量。使函数能够更方便的在不同文件中调用,并快速使用。当一个函数句柄被创建是,它将记录函数的详细信息,因此,当使用一个函数句柄调用该函数时,Matlab会立即执行而不需要再进行文件搜索。

下面通过几个的例子了解怎么使用:

%% 句柄的创建方式一: 方法名=@方法名
myFunction1=@cos; 
myFunction1(pi)
%% 句柄的创建方式二: 方法名=@(变量名) 方法体
myFunction2=@(x) x^2;
myFunction2(2)
%% 句柄的创建方式三: 方法名=str2func('方法名')
myFunction3=str2func('tan');
myFunction3(pi/4)

在这里插入图片描述函数还有很多用法,想赶赶进度,暂时先整理这些,后续有机会再补上。


九、二维图形

Matlab可以表示数据的二维、三维和四维图形。通过对图形的线型、立面、色彩、光线、视角等属性的控制,可把数据的内在特征表现的更加细腻和完美。本章介绍二维图形的绘制和图形的处理。

9.1 plot()函数

9.1.1 基本调用格式

绘制二维图形最常用的函数就是plot()函数,通过不同形式的输入,该函数可以实现不同的功能,其基本调用格式如下:

 plot(y)

此命令中参数y可以是向量、实数矩阵或复数向量。
若y为向量,则绘制的图形以向量索引位横坐标值、以向量元素的值为纵坐标值;
若y为实数矩阵,则绘制y的列向量对其坐标索引的图形,plot函数将绘制Y的列与行号之间的关系。x轴的刻度范围是从1到Y的行数。这里有点难理解。举个例子:以矩阵的第一列为例,第一列的行号就是横坐标,第一列的元素就是纵坐标,以此类推。
若y为复数向量,则plot(y)相当于plot(real(y),imag(y))

例如:用plot(y)命令绘制向量:

t=1:.1:2*pi; %横坐标
y=sin(t); %纵坐标
plot(
  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用MATLAB实时脚本画图的示例代码: ```matlab clear; clc; close all; tim = 0; % 初始化时间 sub = rossubscriber("/MOTOR_STATE","actuatorcontroller_ros/motor_state"); % 订阅ROS话题 pos = \[\]; % 存储实际位置数据 refpos = \[\]; % 存储参考位置数据 figure(1); h1 = animatedline('color','b'); % 实际位置折线图 h2 = animatedline('color','r','marker','.'); % 参考位置折线图 while(tim < 20) msg = receive(sub, 1000); % 接收新数据 tim = msg.Time; pos(end+1) = msg.Position; refpos(end+1) = msg.Refposition; addpoints(h1, tim, msg.Position); % 实时添加实际位置 hold on; addpoints(h2, tim, msg.Refposition); % 实时添加参考位置 drawnow; % 立刻绘图 end ``` 这段代码使用了MATLAB的ROS工具箱,通过订阅ROS话题获取实际位置和参考位置数据,并实时绘制折线图。在循环中,通过`receive`函数接收新数据,然后使用`addpoints`函数将数据添加到折线图中,最后使用`drawnow`函数立即绘制图形。 #### 引用[.reference_title] - *1* [【matlab图像处理】matlab的脚本和函数](https://blog.csdn.net/ling_xiobai/article/details/122280413)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [matlab接收ROS发布的话题通信数据并实时画图](https://blog.csdn.net/weixin_45422543/article/details/128387402)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [基于Matlab脚本实现对串口数据的实时采集绘图](https://blog.csdn.net/weixin_43475628/article/details/118882229)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值