前言:
單元陣列和結構陣列是一種新的資料型別,能將不同型別、不同維數的陣列組合在一起,從而方便對不同的資料型別方便管理和維護。
如上圖所示的2*2矩陣中,分別儲存著四種不同的資料型別,分別為陣列、字串、空矩陣、複數矩陣。
在單元陣列中,通過單元陣列的名字是不能訪問相應的元素,只能訪問對應的索引號,因為單元陣列中儲存的是指向某種資料結構的指標。
建立並賦值:
1.賦值語句建立:分為內容建立和單元索引建立
內容建立:乙個乙個元素進行建立,用大括號
c=[1 2;3 4];
c=[1 2;3 4;2 14];
c=;c='i love a pig';
b=c(2,2);
d=c;cb
d%%%%%%
result:
c =
[2x2 double] [3x2 double]
'i love a pig'
b =
'i love a pig'
d = i love a pig
單元索引建立:乙個乙個單元進行建立,用小括號
c(1,1)=;
c(1,2)=;
c(2,1)=;
c(2,2)=;
b=c(2,2);
d=c;cb
d%%%%%%
result:
c =
[2x2 double] [3x2 double]
'i love a pig'
b =
'i love a pig'
d = i love a pig
注意:單元矩陣與普通矩陣名字不能相同,否則偶同矩陣覆蓋單元矩陣。
2.cell()函式建立:
>> b=cell(2,3)
b =
對它賦值如上面的方法,分內容和單元建立兩種方法。
3.用大括號直接建立並賦值:
如3*4的單元矩陣
>> b=
b =
[2x2 double] 'you are a pig' [3x1 double]
[2x2 double] 'you are a pig' [3x1 double]
[2x2 double] 'you are a pig' [3x1 double]
總結:第三種建立方法最簡單和方便!
4.如何顯示
上面的方法也介紹如何顯示單元陣列,但只能顯示其中乙個元素。
1)用celldisp()函式能全部整體顯示單元陣列的細節內容。
2)用cellplot()函式以圖形方式展現:
c=[1 2;3 4];
c=[1 2;3 4;2 14];
c=;c='i love a pig';
cellplot(c)
結果如圖:2*2的單元矩陣,紅色表示占用記憶體,白色相反,字串最後怎麼沒開闢記憶體?
引入結構陣列原因:普通資料和單元陣列只能通過下標訪問陣列元素,而結構陣列是元素帶名字的,也可以儲存不同型別的元素,元素被稱為域,陣列名.網域名稱可以訪問結構陣列的具體元素值。
1.建立
賦值語句建立:
student(1).name='bob';
student(1).***='man';
student(1).age='25';
student(1).score=[98 99 100];
student(2).name='plimmer';
student(2).***='man';
student(2).age='12';
student(2).score=[98 9 100];
student(3).name='liky';
student(3).***='girl';
student(3).score=[98 99 97];
比如:執行student(2).age 返回 ans =12;
執行student(3).age 返回 ans=;
執行student(2) 返回
ans =
name: 'plimmer'
***: 'man'
age: '12'
score: [98 9 100]
struct()函式建立:
幫助文件的定義:s = struct(field1,value1,...,fieldn,valuen)=sstruct(網域名稱,值,網域名稱,值,
網域名稱,值,。。。。),上面的用
struct()來實現:
>> student(1)=struct('name','bob','***','man','age',25,'score',[98 99 100]);
student(2)=struct('name','plimmer','***','man','age',12,'score',[98 9 100]);
student(3)=struct('name','liky','***','girl','age','','score',[98 99 97]);
%operate:
>> student(2).name%訪問陣列名student(2)的網域名稱name
ans =
plimmer
>>student(2).hobby='music'%增加網域名稱hobby
student =
1x3 struct array with fields:
name
***age
score
hobby
>> student(1)%訪問陣列名student(1)
ans =
name: 'bob'
***: 'man'
age: 25
score: [98 99 100]
hobby:
用rmfield()函式去刪除結構陣列裡的網域名稱。
s = rmfield(s,field)
removes the specified field or fields from structure array s.
>> student(1)=struct('name','bob','***','man','age',25,'score',[98 99 100]);
student(2)=struct('name','plimmer','***','man','age',12,'score',[98 9 100]);
student(3)=struct('name','liky','***','girl','age','','score',[98 99 97]);
%operate:
>> student=rmfield(student,'age')%一次只能刪除乙個網域名稱
student =
1x3 struct array with fields:
name
***score
>> student%驗證
student =
1x3 struct array with fields:
name
***score
>> fields=;%一次能刪除多個網域名稱
student= rmfield(student,fields)
student =
1x3 struct array with fields:
name
>> student%驗證
student =
1x3 struct array with fields:
name
注:還有好多函式對結構陣列進行操作,太多了,不寫上面了碰到再說吧
MATLAB函式控制代碼 單元陣列和結構
函式控制代碼 單元陣列和結構 函式控制代碼 包含有引用函式時所有的資訊,優點 將函式控制代碼作為呼叫中的參量傳遞到另乙個函式 可以儲存到資料結構或檔案中 函式控制代碼運算子 有兩種函式控制代碼 1 命名函式控制代碼 建立例如 f sin 呼叫例如 f pi 4 或者 sin pi 4 2 匿名函式控...
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.單元陣列和結構體作用差不多,相同點 都是存放不同型別的資料,能實現不同型別資料的儲存機制。不同點 ...