一起来学演化计算-matlab基本数据结构struct

觉得有用的话,欢迎一起讨论相互学习~Follow Me

参考文献

http://blog.sina.com.cn/s/blog_468651400100c6c0.html

结构数组struct

  • MATLAB提供了两种定义结构的方式:直接应用和使用struct函数

使用直接引用方式定义结构

  • 与建立数值型数组一样,建立新struct对象不需要事先申明,可以直接引用,而且可以动态扩充。比如建立一个复数变量x
x.real = 0; % 创建字段名为real,并为该字段赋值为0
x.imag = 0 % 为x创建一个新的字段imag,并为该字段赋值为0
x =
real: 0
imag: 0
然后可以将其动态扩充为数组:
x(2).real = 0; % 将x扩充为1×2的结构数组
x(2).imag = 0;
在任何需要的时候,也可以为数组动态扩充字段,如增加字段scale:
x(1).scale = 0;
这样,所有x都增加了一个scale字段,而x(1)之外的其他变量的scale字段为空:
x(1) % 查看结构数组的第一个元素的各个字段的内容
ans =
real: 0
imag: 0
scale: 0
x(2) % 查看结构数组的第二个元素的各个字段的内容,注意没有赋值的字段为空
ans =
real: 0
imag: 0
scale: []
  • 应该注意的是,x的real、imag、scale字段不一定是单个数据元素,它们可以是任意数据类型,可以是向量、数组、矩阵甚至是其他结构变量或元胞数组,而且不同字段之间其数据类型不需要相同。例如:
clear x; x.real = [1 2 3 4 5]; x.imag = ones(10,10);
  • 数组中不同元素的同一字段的数据类型也不要求一样
x(2).real = '123';
x(2).imag = rand(5,1);
  • 甚至还可以通过引用数组字段来定义结构数据类型的某字段
x(3).real = x(1); x(3).imag = 3; x(3)
ans =
real: [1x1 struct]
imag: 3

使用struct函数创建结构

  • 使用struct函数也可以创建结构,该函数产生或把其他形式的数据转换为结构数组。
  • struct的使用格式为:

    s = sturct('field1',values1,'field2',values2,…);
  • 该函数将生成一个具有指定字段名和相应数据的结构数组,其包含的数据values1、valuese2等必须为具有相同维数的数据,数据的存放位置与其结构位置一一对应的。对于struct的赋值用到了元胞数组。数组values1、values2等可以是元胞数组、标量元胞单元或者单个数值。每个values的数据被赋值给相应的field字段。
  • 当valuesx为元胞数组的时候,生成的结构数组的维数与元胞数组的维数相同。而在数据中不包含元胞的时候,得到的结构数组的维数是1×1的。
s = struct('type',{'big','little'},'color',{'blue','red'},'x',{3,4})
s =
1x2 struct array with fields:
type
color
x
% 得到维数为1×2的结构数组s,包含了type、color和x共3个字段。这是因为在struct函数中{'big','little'}、{'blue','red'}和{3,4}都是1×2的元胞数组,可以看到两个数据成分分别为:
s(1,1)
ans =
type: 'big'
color: 'blue'
x: 3
s(1,2)
ans =
type: 'little'
color: 'red'
x: 4
% 相应的,如果将struct函数写成下面的形式:
s = struct('type',{'big';'little'},'color',{'blue';'red'},'x',{3;4})
s =
2x1 struct array with fields:
type
color
x
% 则会得到一个2×1的结构数组。

matlab基本数据结构struct的更多相关文章

  1. flexible array柔性数组、不定长的数据结构Struct详解

    柔性数组,这个名词对我来说算是比较新颖的,在学习跳跃表的实现时看到的.这么好听的名字,的背后到底是如何的优雅. 柔性数组,其名称的独特和迷惑之处在于“柔性”这个词.在C/C++中定义数组,是一个定长的 ...

  2. matlab之结构体数组struct

    以下内容来自于:https://blog.csdn.net/u010999396/article/details/54413615/ 要在MALTAB中实现比较复杂的编程,就不能不用struct类型. ...

  3. Python3标准库:struct二进制数据结构

    1. struct二进制数据结构 struct模块包括一些函数,这些函数可以完成字节串与原生Python数据类型(如数字和字符串)之间的转换. 1.1 函数与Struct类 struct提供了一组处理 ...

  4. Matlab混合编程

    Matlab混合编程 混合编程目的 在Matlab中采用混合编程目的主要包括 利用已有的函数库,避免重复工作 加速计算,特别是减少循环所用时间 利用GPU等进行异构编程 混合编程方法-mex函数 目前 ...

  5. [ACM训练] 算法初级 之 数据结构 之 栈stack+队列queue (基础+进阶+POJ 1338+2442+1442)

    再次面对像栈和队列这样的相当基础的数据结构的学习,应该从多个方面,多维度去学习. 首先,这两个数据结构都是比较常用的,在标准库中都有对应的结构能够直接使用,所以第一个阶段应该是先学习直接来使用,下一个 ...

  6. 数据结构(DataStructure)与算法(Algorithm)、STL应用

    catalogue . 引论 . 数据结构的概念 . 逻辑结构实例 2.1 堆栈 2.2 队列 2.3 树形结构 二叉树 . 物理结构实例 3.1 链表 单向线性链表 单向循环链表 双向线性链表 双向 ...

  7. matlab和C/C++混合编程--Mex

    最近的项目需要matlab和C的混合编程,经过一番努力终于完成了项目要解决的问题.现在就将Mex的一些经验总结一下,当然只是刚刚开始,以后随着学习的深入继续添加.首先讲讲写Mex的一些常规规定,然后我 ...

  8. linux内核数据结构学习总结

    目录 . 进程相关数据结构 ) struct task_struct ) struct cred ) struct pid_link ) struct pid ) struct signal_stru ...

  9. matlab和C/C++混合编程--Mex (六)参数传递

    最近的项目需要matlab和C的混合编程,经过一番努力终于完成了项目要解决的问题.现在就将Mex的一些经验总结一下,当然只是刚刚开始,以后随着学习的深入继续添加.首先讲讲写Mex的一些常规规定,然后我 ...

随机推荐

  1. drf框架 - 请求模块 | 渲染模块

    Postman接口工具 官方 https://www.getpostman.com/ get请求,携带参数采用Params​post等请求,提交数据包可以采用三种方式:form-date.urlenc ...

  2. python中类的函数中的self

    Python类中的self到底是干啥的 Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上.后来对Python渐渐熟悉了一点,再回头看self的 ...

  3. Codeforces Global Round 6[A,B,C]

    题意:给一个字符串,对它重新排列使得它是60的倍数. 模拟一下,需要能整除60  字符串中需要 能整除2 3 10,所以需要字符串各位数之和能整除3 并且有 一个偶数和一个0  或者两个0也行[没考虑 ...

  4. Java基础学习【字符串倒序输出+排序】

    字符串逆序输出 import java.util.*; public class Main{ public static void main(String [] args) { //字符串逆序输出 S ...

  5. [学习笔记]约数&欧拉函数

    约数 一.概念 约数,又称因数.整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a.a称为b的倍数,b称为a的约数. 二.性质 1.整数唯一分解 1)定义 对 ...

  6. 转微软最新的Web服务器Katana发布了版本3

    作者 Jonathan Allen ,译者 邵思华 发布于 2014年8月28日 Katana是微软对OWIN(基于.NET的开放Web接口)标准自行开发的一套实现方案,它是一种相对于IIS及Syst ...

  7. Kafka 幂等生产者和事务生产者特性(讨论基于 kafka-python | confluent-kafka 客户端)

    Kafka 提供了一个消息交付可靠性保障以及精确处理一次语义的实现.通常来说消息队列都提供多种消息语义保证 最多一次 (at most once): 消息可能会丢失,但绝不会被重复发送. 至少一次 ( ...

  8. yii2.0简单使用elasticsearch

    1.安装扩展 /c/phpStudy/PHPTutorial/php/php-5.5.38/php /c/ProgramData/ComposerSetup/bin/composer.phar req ...

  9. pycharm通过pytest运行报错:No test were found 解决

    今天写代码犯了一个不应该犯的小错误,通过记录下来便于查看 1.报错代码如下: platform win32 -- Python 3.7.3, pytest-4.0.2, py-1.8.0, plugg ...

  10. CF1208题解

    C \(\begin{aligned}\ 0 0 1 1\\ 0 0 1 1\\ 2 2 3 3\\ 2 2 3 3\\ \end{aligned}\)将每个四方格分别加上\(0,4,8,12\) D ...