Matlab基础之单元数组和结构数组
Matlab基础之单元数组和结构数组
前言:
单元数组和结构数组是一种新的数据类型,能将不同类型、不同维数的数组组合在一起,从而方便对不同的数据类型方便管理和维护。
如上图所示的2*2矩阵中,分别存储着四种不同的数据类型,分别为数组、字符串、空矩阵、复数矩阵。
一、单元数组(细胞数组)
在单元数组中,通过单元数组的名字是不能访问相应的元素,只能访问对应的索引号,因为单元数组中存储的是指向某种数据结构的指针。
创建并赋值:
1.赋值语句创建:分为内容创建和单元索引创建
内容创建:一个一个元素进行创建,用大括号
c{,}=[ ; ];
c{,}=[ ; ; ];
c{,}=[];
c{,}='i love a pig';
b=c(,);
d=c{,};
c
b
d
%%%%%%
result:
c =
[2x2 double] [3x2 double]
[] 'i love a pig'
b =
'i love a pig'
d =
i love a pig
单元索引创建:一个一个单元进行创建,用小括号
c(,)={[ ; ]};
c(,)={[ ; ; ]};
c(,)={[]};
c(,)={'i love pig'};
b=c(,);
d=c{,};
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{,}=[ ; ];
c{,}=[ ; ; ];
c{,}=[];
c{,}='i love a pig';
cellplot(c)
结果如图:2*2的单元矩阵,红色表示占用内存,白色相反,字符串最后怎么没开辟内存?
二、结构数组
引入结构数组原因:普通数据和单元数组只能通过下标访问数组元素,而结构数组是元素带名字的,也可以存储不同类型的元素,元素被称为域,数组名.域名可以访问结构数组的具体元素值。
1.创建
赋值语句创建:
student().name='bob';
student().sex='man';
student().age='';
student().score=[ ];
student().name='Plimmer';
student().sex='man';
student().age='';
student().score=[ ];
student().name='liky';
student().sex='girl';
student().score=[ ];
比如:执行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()=struct('name','bob','sex','man','age',,'score',[ ]);
student()=struct('name','Plimmer','sex','man','age',,'score',[ ]);
student()=struct('name','liky','sex','girl','age','','score',[ ]);
%operate:
>> student().name%访问数组名student()的域名name
ans =
Plimmer
>>student().hobby='music'%增加域名hobby
student =
1x3 struct array with fields:
name
sex
age
score
hobby
>> student()%访问数组名student()
ans =
name: 'bob'
sex: 'man'
age:
score: [ ]
hobby: []
用rmfield()函数去删除结构数组里的域名。
s = rmfield(s,field) removes the specified field or fields from structure array s.
>> student()=struct('name','bob','sex','man','age',,'score',[ ]);
student()=struct('name','Plimmer','sex','man','age',,'score',[ ]);
student()=struct('name','liky','sex','girl','age','','score',[ ]);
%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
注:还有好多函数对结构数组进行操作,太多了,不写上面了碰到再说吧
Matlab基础之单元数组和结构数组的更多相关文章
- C#中自定义类数组和结构数组的使用
如有雷同,不胜荣幸,若转载,请注明 C#中自定义类数组和结构数组的使用 最近在很多项目中发现很多时候给定的数组要实现某个逻辑或处理很是麻烦,一维数组,二维数组,,,等等需要经过n多转换,还不如自己写一 ...
- MATLAB基础学习(3)——数值数组及运算
rand('state',s)表示随机产生数的状bai态state,一般情百况du下不用指定状态.rand('state',0)作用在于如果指容定zhi状态,产生dao随机结果就相同了.一般情况下不用 ...
- MATLAB中的结构数组
MATLAB中的结构数组 结构数组: 结构是包含一组记录的数据类型,而记录则是存储在相应的字段中.结构的字段可以是任意一种MATLAB数据类型的变量或者对象.结构类型的变量也可以是一维的.二维的或多维 ...
- MATLAB—数组运算及数组化编程
文章目录 前言 一.数组的结构和创建 1.数组及其结构 2.行数组的创建 3.对数组构造的操作 二.数组元素编址及寻访 1.数组元素的编址 2.二维数组元素的寻访 三.数组运算 非数的问题 前言 编程 ...
- matlab学习笔记12_3串联结构体,按属性创建含有元胞数组的结构体,filenames,isfield,isstruct,orderfields
一起来学matlab-matlab学习笔记12 12_3 结构体 串联结构体,按属性创建含有元胞数组的结构体,filenames,isfield,isstruct,orderfields 觉得有用的话 ...
- 全面总结sizeof的用法(定义、语法、指针变量、数组、结构体、类、联合体、位域位段)
一.前言 编译环境是vs2010(32位). <span style="font-size:18px;">#include<iostream> #inclu ...
- C++基础回顾1(数据类型, 控制语句, 数组)
最近两天打开本科学校的C++教材,快速回顾了一下C++方面的内容.虽然书本内容比较基础,但是还是有些知识点值得自己强化记忆.分几篇文章,加上自己的理解记录如下. 先回顾面向过程的部分. C++数据类型 ...
- 5、数组&字符串&结构体&共用体&枚举
程序中内存从哪里来 三种内存来源:栈(stack).堆(heap).数据区(.date): 栈(stack) 运行自动分配.自动回收,不需要程序员手工干预: 栈内存可以反复使用: 栈反复使用后,程序不 ...
- 数组(ArrayPool数组池、Span<T>结构)
前言 如果需要使用相同的类型的多个对象,就可以使用集合和数组,这一节主要讲解数组,其中会重点涉及到Span<T>结构和ArrayPool数组池.我们也会先涉及到简单的数组.多维数组.锯齿数 ...
随机推荐
- 包管理 import debug 模块管理 module
import sys, os this_file_abspath = os.path.dirname(os.path.abspath(__file__)) ProjectUtil_path = '{} ...
- 一些linux嵌入式资源下载地址
linux内核源代码情景分析 非扫描版 上下册合订版 字清楚 带书签 1575页 pdfhttp://download.csdn.net/source/2002579***************** ...
- 关于mysqld_safe
昨天花了一天时间写了mysql的源码安装,比较蛋疼.其中对于mysqld_safe尤其不理解,因为使用apt-get安装几乎中间不需要什么配置,只需要service mysql start即可,但是源 ...
- YTU 2894: G--我要去内蒙古大草原
2894: G--我要去内蒙古大草原 时间限制: 1 Sec 内存限制: 128 MB 提交: 162 解决: 8 题目描述 春天到了,小明想要从烟台开车去内蒙古大草原放松一下,这两地的距离是14 ...
- 原生js写简单轮播图方式1-从左向右滑动
轮播图就是让图片每隔几秒自动滑动,达到图片轮流播放的效果.轮播图从效果来说有滑动式的也有渐入式的,滑动式的轮播图就是图片从左向右滑入的效果,渐入式的轮播图就是图片根据透明度渐渐显示的效果,这里说的是实 ...
- 并不对劲的bzoj4868: [Shoi2017]期末考试
传送门-> 三分裸题. 发现答案只和最后一个科目公布成绩的时间有关. 科目公布成绩的时间越早,老师们的不愉快度越高,这个时间越晚,学生们的不愉快度越高. 它看上去像个单峰的,那么就三分好了. 判 ...
- 转3xian之所在 (一位ACM大牛的博文)
3xian的经历和见解...我深思... 最后一天,漫天飘起了雪花,假装欢送我离去. 这次WF之战不太顺利,早期的C题大概花了1秒钟构思,然而由于输出格式多了一个空格直到两个半小时才逃脱Wrong A ...
- Spring--quartz中cronExpression配置说明
Spring--quartz中cronExpression Java代码 字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 ...
- 关于MYSQL编辑乱码问题
今天在SQLyog中编写表数据时突然出现一个bug,在此记录分享一下. 使用MySQL数据库时,讲中文插入到数据苦衷进行刷新后全部都变成了乱码问号,如下图中studentName列: 产生乱码是因为没 ...
- Linux 常用命令十 which cal date
一.which命令 查找一个目录所在的路径: wang@wang:~/workpalce/python$ which ls /bin/ls 二.cal命令 wang@wang:~/workpalce/ ...