matlab之結構體數組struct


以下內容來自於:https://blog.csdn.net/u010999396/article/details/54413615/

要在MALTAB中實現比較復雜的編程,就不能不用struct類型。而且在MATLAB中實現struct比C中更為方便。

4. 3.1 結構數組的創建
MATLAB提供了兩種定義結構的方式:直接法和使用struct函數法。
1. 使用直接引用方式定義結構
與建立數值型數組一樣,建立新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: [] 

*******************************************************************************************

2. 使用struct函數創建結構
使用struct函數也可以創建結構,該函數產生或吧其他形式的數據轉換為結構數組。
struct的使用格式為:
s = sturct('field1',values1,'field2',values2,…);
該函數將生成一個具有指定字段名和相應數據的結構數組,其包含的數據values1、valuese2等必須為具有相同維數的數據,數據的存放位置域其他結構位置一一對應的。對於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

得到維數為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

則會得到一個2×1的結構數組。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM