Matlab學習3 單元陣列與結構體

2021-09-23 08:02:09 字數 2902 閱讀 8656

一,單元陣列

clear a % 保證賦值的單元陣列名稱不重名

%按單元索引法賦值

a(1,1)=;

a(1,2)=;

a(2,1)=;

a(2,2)=;

aa=[3x3double] [3.0000+5.0000i]

『tsinghua in beijing』 [1x6 double]

%按內容索引法賦值

b=[1 2 3;4 5 6;7 8 9];

b=2+3i;

b=『beijing univ』;

b=1:2:13;

bb= [3x3double] [2.0000+3.0000i]

『beijing univ』 [1x7double]

按單元索引法和按內容索引法所建立的單元是等效的。但需要注意的是,用花括號可以訪問單元陣列單元的內容,而圓括號則只用於表示單元陣列的單元而不顯示單元陣列單元的內容。

二,結構體

1.建立新struct物件不需要事先申明,可以直接引用,而且可以動態擴充。

x.real = 0; % 建立欄位名為real,並為該字段賦值為0

x.imag = 0 % 為x建立乙個新的字段imag,並為該字段賦值為0

x =real: 0

imag: 0

2.可以將其動態擴充為陣列:

x(2).real = 0; % 將x擴充為1×2的結構陣列

x(2).imag = 0;

3.在任何需要的時候,也可以為陣列動態擴充字段,如增加欄位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:

4.應該注意的是,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: 34.使用struct函式建立結構使用struct函式也可以建立結構,該函式產生或把其他形式的資料轉換為結構陣列。

struct的使用格式為:

s = struct(『field1』,values1,『field2』,values2,…);

對於struct的賦值用到了元胞陣列。陣列values1、vales2等可以是元胞陣列、標量元胞單元或者單個數值。每個values的資料被賦值給相應的field欄位。

當valuesx為元胞陣列的時候,生成的結構陣列的維數與元胞陣列的維數相同。而在資料中不包含元胞的時候,得到的結構陣列的維數是1×1的。例如:

s = struct(『type』,,『color』,,『x』,)

s =1x2 struct array with fields:

type

color

x得到維數為1×2的結構陣列s,包含了type、color和x共3個字段。這是因為在struct函式中、和都是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』,,『color』,,『x』,)

s =2x1 struct array with fields:

type

color

x則會得到乙個2×1的結構陣列。

結構陣列的操作

通過help datatypes獲取資料型別列表,可以看到其中的結構資料型別的有關的函式,主要如下表所示。

通過help datatypes獲取資料型別列表,可以看到其中的結構資料型別的有關的函式,主要如下表所示。

函式名

功能描述

[a,b,c]=deal(a)

將a分別複製給a,b,c

getfield

獲取結構中指定欄位的值

setfield

設定結構陣列中指定的字段的值

struct2cell

結構陣列轉化成元胞陣列

isstruct

判斷某變數是否是結構型別

函式名

功能描述

fieldnames

獲取結構的欄位名

rmfield

刪除結構的字段(不是字段內容)

struct

建立結構陣列

isfield

判斷是否存在該欄位

三,元胞陣列

1.定義》a=}

%可以儲存多個不同型別的元素

2.索引》a=[1 2 3]

matlab單元陣列 結構陣列學習記錄

結構陣列 應該是上週總結的,忘了 單元陣列 cell array 即每個元素為乙個單元的陣列。每個單元可以包含任意資料型別的陣列。例如,單元陣列的乙個單元可以是乙個實數矩陣,或是乙個字串陣列,也可以是乙個復向量陣列。用類似矩陣的記號將複雜的資料結構納入乙個變數之下。和矩陣中的圓括號表示下標類似,單元...

matlab學習筆記 一)單元陣列

matlab學習筆記 一 單元陣列 1.floor x 取最小的整數 floor 3.18 3,floor 3.98 3 ceil x 取最大的整數 ceil 3.18 4,ceil 3.18 4 2.單元陣列和結構體作用差不多,相同點 都是存放不同型別的資料,能實現不同型別資料的儲存機制。不同點 ...

matlab基本知識點3 單元陣列與結構

cell函式生成單元陣列 cell n 生成乙個nxn階的置空的單元陣列 cell m,n 或者cell m,n 生成乙個mxn階的置空單元陣列 單元陣列的操作 celldisp c 顯示單元變數c的內容 celldisp c,name 在視窗中顯示的單元型變數的內容的名稱為name,而不是通常傳統...