MATLAB元胞数组与结构体

元胞数组

元胞数组就是一种特殊的数据类型,组成元胞数组的元素可以是任意一种数据类型,就相当于它是一个书包一样,里面装着各种各样的东西。数据类型可以是字符串、双精度数、稀疏矩阵、元胞数组、结构体等其他MATLAB的数据类型。它每一个元胞数据可以是标量、向量、N维数组,每一个可以具有不同的尺寸和空间,每一个元素叫做一个元胞。称这些元胞组合起来的数组为元胞数组。

元胞数组的创建

元胞数组常见的两种创建方法,一是用花括号{}来直接创建

yuanbao={'hello','你好!','what are you doing?'}

在这里插入图片描述

二是用cell函数来创建,cell(m,n)生成一个m行n列的空的元胞数组

A=cell(1,3) 

然后我们在给里面每个位置赋值

A{1}='hello';
A{2}='你好!';
A{3}='what are you doing?';

在这里插入图片描述

常用的函数

yuanbao={'hello','你好!','what are you doing?'},  %创建字符串元胞数组
A=cell(1,3)  %创建一个空的元胞数组,在给里面赋值
A{1}='hello';
A{2}='你好!';
A{3}='what are you doing?';
iscellstr(yuanbao)   %判断改变量是否为字符串元胞数组
yuanbao1=strjoin(yuanbao,'-') %字符串用‘-’连接
yuanbao2=strsplit(yuanbao1,'-')  %还原,去掉‘-’
yuanbao3=[yuanbao [1 2 3;4 5 6;7 8 9]] %添加一个double数组

元胞数组的引用(访问)

元胞数组的引用类似矩阵的引用,只不过元胞数组相当于有两层

A=cell(1,3)  %创建一个空的元胞数组,在给里面赋值
A{1}='hello';A{2}='你好!';A{3}='what are you doing?';
A=[A [1 2 3;4 5 6;7 8 9]]   %添加一个double数组
A(1)              %访问第一个元胞
A{1}              %第一个元胞里面的所有元素
A{1}(2)           %第一个元胞里面所有元素中的第二个元素
A{4}(2,3)         %第四个元胞里面所有元素的第23列位置的元素

注意:这里如果元胞数组A是一个 m × n m\times n m×n的数组,那么你使用A(ind)去索引的话,它是线性索引,所以建议大家用A(a,b)形式去索引。
A(1) %访问第一个元胞
A{1} %第一个元胞里面的所有元素
A{1}(2) %第一个元胞里面所有元素中的第二个元素
A{4}(2,3) %第四个元胞里面所有元素的第2行3列位置的元素

结构体

结构体就是把不同数据类型的变量放到同一个变量名下,通过不同的"域"的概念对结构体中的数据进行赋值,操作等。

结构体的创建

结构体的创建常见的有两种方法,一是

 s = struct(field1,value1,...,fieldN,valueN)

其中field是字段,value是值

例如创建一个学生的信息,有三个字段分别是:学号、姓名、性别。
值分别是:2019001、A、nan。
在这里插入图片描述

第二种是先写变量名+字段

 student.xuehao=2019001
 student.xingming='A'

在这里插入图片描述

结构体的引用(访问)

结构体的引用就是变量名.字段

student.xingming

注意:中间连接一定是用点(.)

%% 访问:变量名.字段
%student.xingming
%student.xingming='B'         %怎样改变值
%rmfield(student,'xingming')  %删除字段
%isstruct(student)            %判断是否是结构体
%isstruct({[1 2 3 4]})        %判断是否有[1 2 3 4]
%isfield(student,'xingming')  %判断是否含有改字段
%fieldnames(student)          %返回一个cell类型,查看字段

结构体的例子

有一个商品A,成本是10元,买出价格是15.6元,写一个函数求利润。

%% 有一个商品A,成本是10元,买出价格是15.6元,写一个函数求利润。
function li_run=lr(shang_p)
       li_run=shang_p.price-shang_p.cheng_b;
end
shang_p=struct('ming_c','A','cheng_b',10,'price',15.6);
lr(shang_p)

结果如下:在这里插入图片描述

结构体数组

假设我们要创建下表的结构体应该怎么写呢

商品成本价格商品编号
A17.928w
B15.823.6p
C12.321g

直接看代码吧

 shang_p(1)=struct('ming_c','A','cheng_b',17.9,'price',28,'biang_h','w')
 shang_p(2)=struct('ming_c','B','cheng_b',18.8,'price',23.6,'biang_h','p')
 shang_p(3)=struct('ming_c','C','cheng_b',12.3,'price',21,'biang_h','g')

结果如下

在这里插入图片描述

如果我们在加一个字段:产地

shang_p(1).chandi='beijing'  %增加一个字段产地

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值