matlab基本數據結構struct


一起來學演化計算-matlab基本數據結構struct

覺得有用的話,歡迎一起討論相互學習~

我的微博我的github我的B站

參考文獻
http://blog.sina.com.cn/s/blog_468651400100c6c0.html

結構數組struct

  • MATLAB提供了兩種定義結構的方式:直接應用和使用struct函數

使用直接引用方式定義結構

  • 與建立數值型數組一樣,建立新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

使用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
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的結構數組。


免責聲明!

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



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