matlab 中 结构体和单元的区别

请说下,matlab 中 结构体和单元的区别
最新回答
梅芳竹清

2024-11-23 09:17:31

1、什么是单元阵列?
单元阵列又叫cell(元胞)阵列,以前见过“元胞数组”一词,其实是可以理解成阵列的,比如二维数组,可以理解成2行n列的矩阵或阵列。
2、单元/元胞阵列是如何构成的呢?
我们都熟悉阵列或矩阵的构成,比如一个m*n大小的矩阵,那么它有m行、n列,共有m*n个元素。如果我们只在实数范围内考虑,那么对应的每一个元素就是一个实数,这是一般的实矩阵。单元阵列也可以有m行n列,对应有m*n个元素。所不同的是单元阵列中每个元素是一个cell(元胞),而每个cell可以由不同数据格式的矩阵构成,构成每个cell的矩阵大小也可以不同,可以是一个元素,也可以是一个向量,也可以是一个多维数组。
3、如何创建一个单元阵列?
可使用cell函数创建一个空的单元阵列,具体可参考MATLAB中
help
cell内容。也可以使用大括号创建,比如我们要创建一个1x3的单元阵列c,则c={A
sum(A)
prod(prod(A))},可以把A设为一个向量,具体各cell数据类型读者可以用c{1}/c{2}/c{3}读出来然后使用whos函数自己验证。其中prod是求积,若A为一个数组(或一维向量),则一个prod后即可求出所有元素之积,第二个prod则还为原结果。若A为一个矩阵,则第一个prod后针对各列求积,结果保留为一个数组,第二个prod则对该数组所有元素再求积,那么两个prod的结果即为对矩阵所有元素求积。
4、什么是结构体及其构成?
结构体可以理解为一种特殊的数据类型。一个结构体有若干结构变量或者域构成。每个结构变量/域类似于一个cell,结构变量可以由不同数据类型的数组构成,比如字符串、整型、浮点数……。此处只是可以借用cell的形式来理解结构变量,但二者绝不等同。
5、如何创建结构体?
可以使用struct函数创建结构体。我们定义结构体为str_array,
则str_array=struct('field1',val1,'field2',val2,……),其中field1、field2为域名,val1、val2为具体值。
6、单元阵列与结构体的不同之处。
结构体(也可称为结构体阵列)中可以使用域名来访问数据,而在单元阵列中则使用矩阵的索引操作。