matlab结构体访问
❶ matlab如何读取结构体中的数据,比如我想利用里面的数据画图
plot(ch11.values)
结构体后面的属性用a.x就可以得到
a是结构体变量的名字,x是它的域
当然你引用的时候要确保a有x这个域,不然会报错
例如
ch11.scale
ch11.units
都是可以的
但是
ch11.abc就会出错了
❷ matlab中的结构体
你赋给一个变量,那个变量就变成结构体了
结构体不能比大小
❸ matlab 中 结构体和单元的区别
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、单元阵列与结构体的不同之处。
结构体(也可称为结构体阵列)中可以使用域名来访问数据,而在单元阵列中则使用矩阵的索引操作。
❹ 怎么样在MATLAB中读取结构体中的数据
简单,使用fieldnames()函数查看有哪些成员,使用getfield()函数查看成员数据,比如:
>> a.x1 = 123;
>> a.x2 = 'a string';
>> a.x3 = [1,2,3,4,5];
>> fieldnames(a) % 返回成员名称列表
ans =
'x1'
'x2'
'x3'
>> getfield(a,'x1') % 查看某一成员的值
ans =
123
❺ MATLAB如何提取结构体中数据
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结构体访问()和{}的区别问题
这里涉及到单元阵列的索引方式
单元阵列的表示有两种方式,一种是内容索引,一种是单元索引。
内容索引要用到大括号{},还有他们的下标,例如楼主的N{1,2}属于内容索引。
内容索引的这种类型定义了包含在一个单元中的数据结构的内容。
单元索引则是把存储于单元中的数据用大括号括起来,单元的下标用普通下标标记法。例如N(1,2)。
单元索引的这种类型创建了包含有指定值的一个数据结构,并把这个数据结构赋于一个单元。
他们的区别在于你直接定义并给单元阵列赋值时的形式,比如:
内容索引:
N{1,1}=[1 2 ;4 5];
N{1,2} = 'Name';
N{2,1} = 2-4i;
N{2,2} = 7;
对应的单元索引形式:
N(1,1)={[1 2;4 5]};
N(1,2)={'Name'};
N(2,1)={2-4i};
N(2,2)={7};
关于楼主的第二个问题:
因为cc=N(1,2)是单元索引形式,所以cc是一个单元类型,其所占内存空间不仅要存入数据的数值,还要指定数据的数据类型,而且单元阵列不像矩阵或者数组在MATLAB中有特定的存储结构,这就是导致cc占用空间这么大的原因,至于68Bytes怎么得来的,这个确实不知道。
期待有MATLAB大师来解答。
期待楼主加分哦,很努力了,O(∩_∩)O~
❼ matlab中怎么定义结构体
1.
使用直接引用方式定义结构
与建立数值型数组一样,建立新struct对象不需要事先申明,可以直接引用,而且可以动态扩充。比如建立一个复数变量x:
x.real
=
0;
%
创建字段名为real,并为该字段赋值为0
x.imag
=
0
%
为x创建一个新的字段imag,并为该字段赋值为0
x
=
real:
0
imag:
0
2.
使用struct函数创建结构
使用struct函数也可以创建结构,该函数产生或吧其他形式的数据转换为结构数组。
struct的使用格式为:
s
=
sturct('field1',values1,'field2',values2,…);