前言:

单元数组和结构数组是一种新的数据类型,能将不同类型、不同维数的数组组合在一起,从而方便对不同的数据类型方便管理和维护。

如上图所示的2*2矩阵中,分别存储着四种不同的数据类型,分别为数组、字符串、空矩阵、复数矩阵。

一、单元数组(细胞数组)

在单元数组中,通过单元数组的名字是不能访问相应的元素,只能访问对应的索引号,因为单元数组中存储的是指向某种数据结构的指针。

创建并赋值:

1.赋值语句创建:分为内容创建和单元索引创建

内容创建:一个一个元素进行创建,用大括号

c{1,1}=[1 2;3 4];

c{1,2}=[1 2;3 4;2 14];

c{2,1}=[];

c{2,2}='i love a pig';

b=c(2,2);

d=c{2,2};

c

b

d

%%%%%%

result:

c =

[2x2 double] [3x2 double]

[] 'i love a pig'

b =

'i love a pig'

d =

i love a pig

单元索引创建:一个一个单元进行创建,用小括号

c(1,1)={[1 2;3 4]};

c(1,2)={[1 2;3 4;2 14]};

c(2,1)={[]};

c(2,2)={'i love pig'};

b=c(2,2);

d=c{2,2};

c

b

d

%%%%%%

result:

c =

[2x2 double] [3x2 double]

[] 'i love a pig'

b =

'i love a pig'

d =

i love a pig

注意:单元矩阵与普通矩阵名字不能相同,否则偶同矩阵覆盖单元矩阵。

2.cell()函数创建:

>> b=cell(2,3)

b =

[]    []    []

[]    []    []

对它赋值如上面的方法,分内容和单元创建两种方法。

3.用大括号直接创建并赋值:

如3*4的单元矩阵

>> b={[2 3;4 6],'you are a pig',[],[2;2;1];[2 3;4 6],'you are a pig',[],[2;2;1];[2 3;4 6],'you are a pig',[],[2;2;1]}

b =

[2x2 double]    'you are a pig'    []    [3x1 double]

[2x2 double]    'you are a pig'    []    [3x1 double]

[2x2 double]    'you are a pig'    []    [3x1 double]

总结:第三种创建方法最简单和方便!

4.如何显示

上面的方法也介绍如何显示单元数组,但只能显示其中一个元素。

1)用celldisp()函数能全部整体显示单元数组的细节内容。

2)用cellplot()函数以图形方式展现:

c{1,1}=[1 2;3 4];

c{1,2}=[1 2;3 4;2 14];

c{2,1}=[];

c{2,2}='i love a pig';

cellplot(c)

结果如图:2*2的单元矩阵,红色表示占用内存,白色相反,字符串最后怎么没开辟内存?

二、结构数组

引入结构数组原因:普通数据和单元数组只能通过下标访问数组元素,而结构数组是元素带名字的,也可以存储不同类型的元素,元素被称为域,数组名.域名可以访问结构数组的具体元素值。

1.创建

赋值语句创建:

student(1).name='bob';

student(1).sex='man';

student(1).age='25';

student(1).score=[98 99 100];

student(2).name='Plimmer';

student(2).sex='man';

student(2).age='12';

student(2).score=[98 9 100];

student(3).name='liky';

student(3).sex='girl';

student(3).score=[98 99 97];

比如:执行student(2).age  返回 ans =12;

执行student(3).age  返回 ans=[];

执行student(2)   返回

ans =

name: 'Plimmer'

sex: 'man'

age: '12'

score: [98 9 100]

struct()函数创建:

帮助文档的定义:s = struct(field1,value1,...,fieldN,valueN)=sstruct(域名,值,域名,值,域名,值,。。。。),上面的用struct()来实现:

>> student(1)=struct('name','bob','sex','man','age',25,'score',[98 99 100]);

student(2)=struct('name','Plimmer','sex','man','age',12,'score',[98 9 100]);

student(3)=struct('name','liky','sex','girl','age','','score',[98 99 97]);

%operate:

>> student(2).name%访问数组名student(2)的域名name

ans =

Plimmer

>>student(2).hobby='music'%增加域名hobby

student =

1x3 struct array with fields:

name

sex

age

score

hobby

>> student(1)%访问数组名student(1)

ans =

name: 'bob'

sex: 'man'

age: 25

score: [98 99 100]

hobby: []

用rmfield()函数去删除结构数组里的域名。

s = rmfield(s,field) removes the specified field or fields from structure array s

>> student(1)=struct('name','bob','sex','man','age',25,'score',[98 99 100]);

student(2)=struct('name','Plimmer','sex','man','age',12,'score',[98 9 100]);

student(3)=struct('name','liky','sex','girl','age','','score',[98 99 97]);

%operate:

>> student=rmfield(student,'age')%一次只能删除一个域名

student =

1x3 struct array with fields:

name

sex

score

>> student%验证

student =

1x3 struct array with fields:

name

sex

score

>> fields={'age','sex','score'};%一次能删除多个域名

student= rmfield(student,fields)

student =

1x3 struct array with fields:

name

>> student%验证

student =

1x3 struct array with fields:

name

注:还有好多函数对结构数组进行操作,太多了,不写上面了碰到再说吧

三、参考资料

标签:数组,age,sex,score,Matlab,student,pig,单元,name

来源: https://blog.csdn.net/weixin_41213648/article/details/89575309

matlab单元数组和结构,Matlab中单元数组和结构数组相关推荐

  1. C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例

    C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例 目录 一.简单介绍 二.结构体定义和使用 三. ...

  2. 结构体中引用另一结构体

    结构体中引用另一结构体 1.自引用结构体 1.1不使用typedef时 2.1使用typedef时 2.互引用结构体 结构体引用主要分为自引用和互引用.我主要以实例展示如何使用,不会过多赘述太多,想必 ...

  3. python 查找excel内容所在的单元格_python 读取excel中单元格的内容

    python 读取excel中单元格的内容 excel文件内容: 读取excel代码: # coding=utf-8 import xlrd import sys reload(sys) sys.se ...

  4. php 中如何设置单元格跨行,HTML表格中单元格跨行跨列

    HTML表格中单元格跨行跨列 对于标准的表格,每一行的单元格 数量是一样的.但在实际使用中,经常会遇到跨行跨列的表格,这个时候,每一行的数量就不一样了. 一.定义 所谓"跨行",是 ...

  5. c语言中二维数组怎么,c语言中什么是二维数组

    c语言中什么是二维数组 二维数组A[m][n],这是一个m行,n列的二维数组.以下是由应届毕业生小编整理关于c语言二维数组的内容,希望对大家有所帮助!更多相关内容请关注应届毕业生考试 网. c语言的二 ...

  6. c语言中字符串数组应用,C语言中字符变量字符串和字符数组应用.doc

    C语言中字符变量字符串和字符数组应用 字符变量(type`char`?字符串(string)和字符数组(type`char`arrary)是C语言中非常重要的结构成分,也是应用编程中常发生混淆?导致错 ...

  7. python读取一行数组_python 把文件中的每一行以数组的元素放入数组中的方法

    有时候需要把文件中的数据放入到数组中,这里提供了一种方法,可以根据文件结尾的标记进行数据拆分,然后再把拆分的文件放入数组中 # -*-coding: utf-8 -*- f = open(" ...

  8. java数组 js数组的长度_js中split()方法得到的数组长度问题

    定义和用法 split() 方法用于把一个字符串分割成字符串数组. 语法 stringObject.split(separator,howmany) 参数 描述 separator 必需.字符串或正则 ...

  9. php中多维数组的长度,php中count获取多维数组长度的方法

    这篇文章主要介绍了php中count获取多维数组长度的方法,实例分析了数组的原理并总结了数组长度计算的方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了php中count获取多维数组长度的实 ...

  10. javascript字典中添加数组_在javascript中合并两个字典数组

    您可以使用 Array#map方法生成新数组(假设两个数组的顺序相同). var lat = [{key:"2017-09-20T11:51:32.000Z", value:50. ...

最新文章

  1. 也说 ASP.NET MVC的 Script 管理
  2. 华硕笑傲珠峰,网络口碑营销巧打奥运擦边球
  3. 数字货币 BCH的混币神器CashShuffle
  4. TypeScript 的 generic 函数
  5. 隐藏界面没有必要应用场景
  6. 蚂蚁架构师郭援非:分布式数据库是金融机构数字化转型的最佳路径
  7. java实现——客户端登录
  8. 小米9将在MWC2019上登场:后置三摄拍照令人“中毒”
  9. 通过RHCE认证之路
  10. 使用EEMD时报错:TypeError: ‘module‘ object is not callable
  11. ps模糊照片变清晰步骤东方逐梦
  12. 佛祖保佑永无BUG 代码 (各种样式)
  13. 100php等于多少RMB,100000 CNY
  14. Unity UI框架的搭建
  15. F12变中文,竟如此简单?
  16. c语言控制台数字键打地鼠,C语言编程打地鼠
  17. Redis概述、安装、可视化访问
  18. vue js 复制div区域内容
  19. 高德地图之添加遮盖物
  20. React集成中国地图

热门文章

  1. 基础编程题目集 6-7 统计某类完全平方数 (20 分)
  2. C/C++排序算法(3)冒泡排序
  3. 数据3分钟丨​PingCAP DevCon 2021回顾;openGauss社区颁发首张OGCA认证证书
  4. 记录一次数据同步到数据仓库的架构与实践
  5. 对话华为云专家,摆脱无意义“内卷”
  6. 【nodejs原理源码赏析(5)】net模块与通讯的实现
  7. 野生前端的数据结构基础练习(5)——散列
  8. 【深入浅出etcd系列】1. 架构概览
  9. plusready html5,封装一个简单实用的 plusready 方法
  10. html怎么帮图片占位,css+html实现Skeleton Screen 加载占位图动画效果(带动画)