往期回顾
【MATLAB机器人建模汇总】
⧫
【Matlab 六自由度机器人】系列文章汇总
\blacklozenge \fcolorbox{green}{aqua}{【Matlab 六自由度机器人】系列文章汇总 }
⧫【Matlab 六自由度机器人】系列文章汇总
【主线】
运 动 学 \color{red}运动学 运动学
【补充说明】
- 关于灵活工作空间与可达工作空间的理解
- 关于改进型D-H参数(modified Denavit-Hartenberg)的详细建立步骤
- 关于旋转的参数化(欧拉角、姿态角、四元数)的相关问题
- 关于双变量函数atan2(x,y)的解释
- 关于机器人运动学反解的有关问题
【MATLAB基础知识】
前言
本篇介绍Matlab的预定义变量,其中包括元胞数组和结构体。
以下是本篇文章正文内容,包含对元胞数组与结构体含义的理解和代码的分步解析。
正文
一、元胞数组
1. 元胞数组操作函数
定义:元胞数组是MATLAB语言中一种特殊的数据类型。元胞数组的基本组成单位是元胞,元宝可以存放任意类型、任意大小的数组,而且同一个元胞数组中各元胞的内容可以不相同。
MATLAB中元胞数组可以通过赋值语句直接定义,也可以由cell函数预先分配存储空间再对元胞元素逐个赋值。直接定义元胞数组可以使用花括号 { } ,而使用cell函数创建空元胞数组可以节约内存,提高执行效率。
下面是关于元胞数组的操作函数的表格
函数名 | 说明 | 函数名 | 说明 |
---|---|---|---|
cell | 生成元胞数组 | cellfun | 对元胞数组中的元素指定不同的函数 |
cellstr | 生成字符型元胞数组 | iscell | 判断是否为元胞数组 |
celldisp | 显示元胞数组的内容 | reshape | 改变元胞数组的结构 |
cellplot | 图形显示元胞数组的内容 |
2. 代码实例
在命令行窗口输入以下命令:
clc
clear
close all
A = {[1:5];'ysw swjtu yu sheng wei'} % 直接定义元胞数组
结果如下:
A =
2×1 cell 数组
[1×5 double]
'ysw swjtu yu sheng wei'
在命令行窗口输入以下命令:
B = cell(1,3);
B{1,1} = 1:5;
B{1,2} = ones(2);
B{1,5} = 'swjtu ysw';
celldisp(B)
运行结果如下:
B{1} =
1 2 3 4 5
B{2} =
1 1
1 1
B{3} = []
B{4} = []
B{5} = swjtu ysw
二、结构体
1. 结构体操作函数
结构体是另一种能够存放不同类型的数据类型,它与元胞数组的区别在于结构体是以指针的方式来传递数据的,而元胞数组则通过值传递的方式。结构体与元胞数组在程序中的合理使用,能够让程序简洁易懂,且操作方便。
结构体的定义有两种方式:一种是直接赋值;另一种是通过struct函数来定义。
直接赋值需要指出结构体的属性名称,以指针操作符
“
.
”
“.”
“.”连接结构体变量名与属性名。对某属性进行赋值时,MATLAB会自动生成包含此属性的结构体变量,而且在同一结构体变量中,属性的数据类型不要求完全统一,这也是MATLAB语言灵活性的体现。
结构体变量也可以构成数组,即结构体数组,对结构体数组进行赋值操作时,可以只对部分元素赋值,此时未被赋值的元素将赋予空矩阵,但可以随时对其进行赋值。
使用struct函数定义结构体时,采用如下调用方式:
结构体变量名 = struct(属性名1,属性值1,属性名2属性值2,···)
下面是关于结构体操作函数的表格
函数名 | 说明 | 函数名 | 说明 |
---|---|---|---|
struct | 生成结构体变量 | isfield | 判断是否为结构体变量的属性 |
fieldname | 得到结构体变量的属性名 | isstruct | 判断是否为结构体变量 |
getfield | 得到结构体变量的属性值 | rmfield | 删除结构变量中的属性 |
setfield | 设定结构体变量的属性值 |
2. 代码实例
在命令行窗口输入以下命令:
clear
clc
close all
% 通过直接赋值
A.b1 = 10;
A.b2 = ones(5);
A.b3 = 'Albert';
B = struct('b1',1,'b2',ones(3),'b3','AlbertLau');
A
B
运行结果如下
A =
包含以下字段的 struct:
b1: 10
b2: [5×5 double]
b3: 'Albert'
B =
包含以下字段的 struct:
b1: 1
b2: [3×3 double]
b3: 'AlbertLau'
总结
以上就是系统预定义变量——元胞数组与结构体的内容,本文详细介绍了如何理解元胞数组与结构体及代码的实现。