【Matlab】系统预定义变量——元胞数组与结构体

往期回顾

【MATLAB机器人建模汇总】
⧫ 【Matlab 六自由度机器人】系列文章汇总  \blacklozenge \fcolorbox{green}{aqua}{【Matlab 六自由度机器人】系列文章汇总 } Matlab  
【主线】

运 动 学 \color{red}运动学

  1. 定义标准型及改进型D-H参数,建立机器人模型。
  2. 运动学正解
  3. 基于蒙特卡罗方法(Monte Carlo Method)构建机器人工作空间

【补充说明】

  1. 关于灵活工作空间与可达工作空间的理解
  2. 关于改进型D-H参数(modified Denavit-Hartenberg)的详细建立步骤
  3. 关于旋转的参数化(欧拉角、姿态角、四元数)的相关问题
  4. 关于双变量函数atan2(x,y)的解释
  5. 关于机器人运动学反解的有关问题

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

总结

以上就是系统预定义变量——元胞数组与结构体的内容,本文详细介绍了如何理解元胞数组与结构体及代码的实现。

参考文献

MATLAB/Simulink系统仿真——清华大学出版社

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Albert_Lsk

今天又能喝柠檬茶啦

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

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

打赏作者

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

抵扣说明:

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

余额充值