matlab读取struct数据结构,matlab基本数据结构struct
一起來(lái)學(xué)演化計(jì)算-matlab基本數(shù)據(jù)結(jié)構(gòu)struct
覺得有用的話,歡迎一起討論相互學(xué)習(xí)~Follow Me
結(jié)構(gòu)數(shù)組struct
MATLAB提供了兩種定義結(jié)構(gòu)的方式:直接應(yīng)用和使用struct函數(shù)
使用直接引用方式定義結(jié)構(gòu)
與建立數(shù)值型數(shù)組一樣,建立新struct對(duì)象不需要事先申明,可以直接引用,而且可以動(dòng)態(tài)擴(kuò)充。比如建立一個(gè)復(fù)數(shù)變量x
x.real = 0; % 創(chuàng)建字段名為real,并為該字段賦值為0
x.imag = 0 % 為x創(chuàng)建一個(gè)新的字段imag,并為該字段賦值為0
x =
real: 0
imag: 0
然后可以將其動(dòng)態(tài)擴(kuò)充為數(shù)組:
x(2).real = 0; % 將x擴(kuò)充為1×2的結(jié)構(gòu)數(shù)組
x(2).imag = 0;
在任何需要的時(shí)候,也可以為數(shù)組動(dòng)態(tài)擴(kuò)充字段,如增加字段scale:
x(1).scale = 0;
這樣,所有x都增加了一個(gè)scale字段,而x(1)之外的其他變量的scale字段為空:
x(1) % 查看結(jié)構(gòu)數(shù)組的第一個(gè)元素的各個(gè)字段的內(nèi)容
ans =
real: 0
imag: 0
scale: 0
x(2) % 查看結(jié)構(gòu)數(shù)組的第二個(gè)元素的各個(gè)字段的內(nèi)容,注意沒有賦值的字段為空
ans =
real: 0
imag: 0
scale: []
應(yīng)該注意的是,x的real、imag、scale字段不一定是單個(gè)數(shù)據(jù)元素,它們可以是任意數(shù)據(jù)類型,可以是向量、數(shù)組、矩陣甚至是其他結(jié)構(gòu)變量或元胞數(shù)組,而且不同字段之間其數(shù)據(jù)類型不需要相同。例如:
clear x; x.real = [1 2 3 4 5]; x.imag = ones(10,10);
數(shù)組中不同元素的同一字段的數(shù)據(jù)類型也不要求一樣
x(2).real = '123';
x(2).imag = rand(5,1);
甚至還可以通過(guò)引用數(shù)組字段來(lái)定義結(jié)構(gòu)數(shù)據(jù)類型的某字段
x(3).real = x(1); x(3).imag = 3; x(3)
ans =
real: [1x1 struct]
imag: 3
使用struct函數(shù)創(chuàng)建結(jié)構(gòu)
使用struct函數(shù)也可以創(chuàng)建結(jié)構(gòu),該函數(shù)產(chǎn)生或把其他形式的數(shù)據(jù)轉(zhuǎn)換為結(jié)構(gòu)數(shù)組。
struct的使用格式為: s = sturct('field1',values1,'field2',values2,…);
該函數(shù)將生成一個(gè)具有指定字段名和相應(yīng)數(shù)據(jù)的結(jié)構(gòu)數(shù)組,其包含的數(shù)據(jù)values1、valuese2等必須為具有相同維數(shù)的數(shù)據(jù),數(shù)據(jù)的存放位置與其結(jié)構(gòu)位置一一對(duì)應(yīng)的。對(duì)于struct的賦值用到了元胞數(shù)組。數(shù)組values1、values2等可以是元胞數(shù)組、標(biāo)量元胞單元或者單個(gè)數(shù)值。每個(gè)values的數(shù)據(jù)被賦值給相應(yīng)的field字段。
當(dāng)valuesx為元胞數(shù)組的時(shí)候,生成的結(jié)構(gòu)數(shù)組的維數(shù)與元胞數(shù)組的維數(shù)相同。而在數(shù)據(jù)中不包含元胞的時(shí)候,得到的結(jié)構(gòu)數(shù)組的維數(shù)是1×1的。
s = struct('type',{'big','little'},'color',{'blue','red'},'x',{3,4})
s =
1x2 struct array with fields:
type
color
x
% 得到維數(shù)為1×2的結(jié)構(gòu)數(shù)組s,包含了type、color和x共3個(gè)字段。這是因?yàn)樵趕truct函數(shù)中{'big','little'}、{'blue','red'}和{3,4}都是1×2的元胞數(shù)組,可以看到兩個(gè)數(shù)據(jù)成分分別為:
s(1,1)
ans =
type: 'big'
color: 'blue'
x: 3
s(1,2)
ans =
type: 'little'
color: 'red'
x: 4
% 相應(yīng)的,如果將struct函數(shù)寫成下面的形式:
s = struct('type',{'big';'little'},'color',{'blue';'red'},'x',{3;4})
s =
2x1 struct array with fields:
type
color
x
% 則會(huì)得到一個(gè)2×1的結(jié)構(gòu)數(shù)組。
總結(jié)
以上是生活随笔為你收集整理的matlab读取struct数据结构,matlab基本数据结构struct的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 拓扑空间中的收敛性
- 下一篇: matlab struct 删除,mat