1. 结构数组的创建

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

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

与建立数值型数组一样,建立新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

b) 使用struct函数创建结构

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

struct的使用格式为:

s = sturct('field1',values1,'field2',values2,…);

该函数将生成一个具有指定字段名和相应数据的结构数组,其包含的数据values1、values2等必须为具有相同维数的数据,数据的存放位置与其他结构位置一一对应的。

对于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的结构数组。

2. 结构数组的操作

MATLAB中专门用于对结构数组的操作的函数并不多,通过help datatypes获取数据类型列表,可以看到其中的结构数据类型的有关的函数。

结构数组的操作函数

deal把输入处理成输出

Fieldnames获取结构的字段名

getfield获取结构中指定字段的值

Rmfield删除结构的字段(不是字段内容)

setfield设置结构数组中指定的字段的值

Struct创建结构数组

struct2cell结构数组转化成元胞数组

Isfield判断是否存在该字段

isstruct判断某变量是否是结构类型

matlab中怎样提取结构体下的数据库,MATLAB如何提取结构体中数据相关推荐

  1. SSM框架下后台数据库传送到前端jsp文件中

    SSM框架中后台存储在数据库中的数据,如何传送到前端中使用呢? 前提:SSM框架已经搭好: Category.xml中的SQL语句集已经写好 Category中的GetXX()和SetXX()方法也已 ...

  2. virtualbox中安装xp系统、安装oracle数据库到虚拟机的xp系统中、主机连接oracle、备份xp系统、oracle数据库的一些基本概念(学习oracle数据库的准备工作)-day01

    目录 1. 安装virtualbox 1.1 什么是virtualbox 1.2 安装virtualbox 1.3 virtualbox跑xp系统 1.4 让虚拟机的xp与外面的系统网络互通 2. 安 ...

  3. matlab lu分解 l不是下三角,在MATLAB中执行LU分解而不进行旋转

    默认情况下,MATLAB的lu始终执行旋转.如果您在尝试执行传统的LU分解算法时,例如对角线系数等于0,则在执行高斯消元法创建上三角矩阵U时需要对角系数,因此无法工作除以零误差.需要旋转以确保分解稳定 ...

  4. linux下mysql目录结构_linux下mysql安装配置与目录结构

    本节内容: linux下mysql安装与配置.mysql目录结构. 1.准备安装程序(官方网站下载) 服务端:MySQL-server-community-5.1.44-1.rhel4.i386.rp ...

  5. 基带信号及其眼图MATLAB仿真实现,Matlab通信仿真——带限系统下的基带信号

    Matlab通信仿真--带限系统下的基带信号 Matlab通信仿真--带限系统下的基带信号 1 余弦滚降特性 满足消除码间串扰条件的H(f)有很多种,容易想到的一种极限情况,就是H(f)为理想低通型. ...

  6. matlab 眼图 值,Matlab通信仿真——带限系统下的基带信号

    Matlab通信仿真--带限系统下的基带信号 Matlab通信仿真--带限系统下的基带信号 1 余弦滚降特性 满足消除码间串扰条件的H(f)有很多种,容易想到的一种极限情况,就是H(f)为理想低通型. ...

  7. SQLSERVER2005的安装目录结构(下)

    SQLSERVER2005的安装目录结构(下) SQLSERVER2005的安装目录结构(下) 上篇介绍了SQLSERVER在注册表里保存的一些设置,这篇介绍他在你的硬盘里存放了哪些组件和工具 带你进 ...

  8. Linux下Mysql数据库的基础操作

    Linux下Mysql数据库的基础操作 一.Mysql数据介绍 二.数据库相关术语介绍 1.数据库相关名词 2.相关术语介绍 三.Mysql数据库的管理 1.创建数据库用户 2.查询用户状态 3.修改 ...

  9. mysql提取5号的数据库_五、各类数据库信息的提取

    为了后续做代码生成器,有必要了解下各类数据库信息的提取.一般需要提取的信息包括:数据库列表,存储过程,视图,数据表,数据表字段等.当然,类似SQLite这种数据库,需要提取的信息就相对很少了. (一) ...

  10. Linux下MongoDB的安装,通过配置文件启动Mongodb的方式研究,mongodb自启动脚本(Linux),Windows下安装MongoDB服务,集群部署,数据导出和恢复

    关于MongoDB的windows的 安装,可以参考: http://www.runoob.com/mongodb/mongodb-window-install.html 关于Linux的安装可以参考 ...

最新文章

  1. CUDA Samples: Calculate Histogram(atomicAdd)
  2. Windows下在Django中创建项目时ImportError: No module named django.core解决方法
  3. 经典论文复现 | 基于深度卷积网络的图像超分辨率算法
  4. 128.3. Example 配置实例
  5. Bailian4004 数字组合【递归+DP】
  6. HDU 1754 I Hate It(线段树版)
  7. Croc Champ 2013 - Round 1 E. Copying Data(线段树)
  8. error: ‘VPX_IMG_FMT_RGB32’ undeclared (first use in this function); did you mean ‘VPX_IMG_FMT_NV12’?
  9. Atitit 互联网技术公司防爆指南技术规范标准流程 30个危险物品
  10. python自制懒人听书
  11. 游戏策划入门(6)——把模块变成现实
  12. 操作系统原理1-3章答案 黑新宏 胡元义主编
  13. 电阻元件、电感元件、电容元件
  14. php 领红包程序,用PHP实现的抢红包小程序
  15. linux7 etc下的grub2,Centos7安装 grub2 配置技巧:改变启动顺序
  16. 【Paper】DTWSequence Analysis
  17. 我玩某宝新模式2个月收λ15万,你觉得过气的行业,真的很赚钱!
  18. 高德地图——浏览器定位+点击获取经纬度+去除高德百度地图左下角logo
  19. java中兴参与实参相同_java错题集
  20. ANSYS教程与使用

热门文章

  1. D3/Echarts/G2的对比分析
  2. 笔记_深度学习相关_PyTorch
  3. OpenCV_(Based on Sobel Filter to Detect edges) 基于Sobel算子的方向滤波器检查边缘
  4. 分布式存储系统学习笔记(三)—分布式键值系统(2)—淘宝Tair
  5. 前端复习笔记(一)——HTML
  6. YOLOv5永不缺席 | YOLO-Pose带来实时性高且易部署的姿态估计模型!!!
  7. 瞒不住了!超过4000人都在这里死磕3D视觉技术
  8. 基于先验LiDAR点云地图的单目VIO定位
  9. 综述|线结构光中心提取算法研究
  10. ROS下同时接收多个话题并实现相机和雷达的数据融合