元胞數組定義:
元胞數組(Cell Array)中的基本組成是元胞,每一個元胞可以視為一個單元(Cell),用來存放各種不同類型的數據,如矩陣、字符串、多維數組、元胞數組以及結構數組等。同一元胞數組中各元胞的內容可以不同。
從定義中元胞內可以用來存放各種不同的數據類型這個角度來看,matlab中的元胞數組類似於C語言中的結構體。
元胞數組維數與下標:
元胞數組可以使一維、二維或者多維,每個元胞以下標區分,下標的編碼方式也與矩陣的相同,分為單下標和全下標方式。
元胞數組的創建:
1、直接使用{}創建,用大括號"{}"創建元胞數組並賦值
>> A = {'這是一個元胞數組',[1 2 3 4];magic(3),{'你好','hello'}}
A =
2×2 cell 數組
'這是一個元胞數組' [1×4 double]
[3×3 double] {1×2 cell }
>> whos A
Name Size Bytes Class
A 2x2 806 cell
分析:創建的元胞數組中元胞A(1,1)是字符串,A(1,2)是矩陣,A(2,1)是矩陣,A(2,2)是1個元胞數組
2、由各元胞創建(由創建各元胞的方法創建元胞數組)
>>B(1,1) = {'這是第二個元胞數組'}
B =
cell
'這是第二個元胞數組'
>>B(1,2) = {5*5i}
B =
1×2 cell 數組
'這是第二個元胞數組' [0.0000 +25.0000i]
>>B(1,3) = {[1 2;3 4]}
B =
1×3 cell 數組
'這是第二個元胞數組' [0.0000 +25.0000i] [2×2 double]
3、由各元胞內容創建。
這種方法與第二種方法有些相似,容易混淆,使用時注意()和{}的區別。
在元胞數組中A(1,2)表示第一行第2列的元胞元素,A{1,2}表示元素中存放的內容
>> A(1,2)
ans =
cell
[1×4 double]
>> A{1,2}
ans =
1 2 3 4
從上面的程序,慢慢體會一下元胞元素與元胞元素中存放內容的差別;元胞元素只是說明這是一個“[1×4 double]”的矩陣,且矩陣中的數據類型是double類型,可見,元胞元素只是給出了數據類型。元胞數組中存放的內容就是這個元胞元素的取值。如果對C語言比較熟悉的朋友,可以理解類比C語言變量的數據類型與變量的取值來理解一下。
下面使用由元胞內容創建元胞的方法,見下面程序,注意這里使用的是{},而不是()。
>> C{1,1} = {'這是第三個元胞數組'}
C =
cell
{1×1 cell}
>> C{1,2} = magic(4)
C =
1×2 cell 數組
{1×1 cell} [4×4 double]
元胞數組的內容顯示:
使用celldisp命令顯示元胞數組的內容
>> celldisp(A)
A{1,1} =
這是第一個元胞數組
A{2,1} =
8 1 6
3 5 7
4 9 2
A{1,2} =
1 2 3 4
A{2,2}{1} =
你好
A{2,2}{2} =
hello
%可以看出,在matlab中元胞數組的顯示是默認“列顯示”的;
【注意】元胞中套元胞的獲取方法為A{2,2}{1},表示第2行第2列的元胞元素中存放元胞數組的第一個元胞元素的內容
元胞數組的內容獲取:
1、獲取元胞數組的元素(簡單理解就是獲取指定元胞的大小),用小括號“()”,獲取指定元胞的內容,用大括號“{}”,進一步獲取指定元胞的內容x3 = A{1,2}(1,4),如A{1,2}為矩陣,獲取該矩陣指定元素(1,4);進一步獲取指定元胞內容中的內容,x4 = A{2,2}{1},如 A{2,2}是元胞數組中的元胞元素,獲取該元胞元素中的第一個元胞中存放的內容
>> x1 = A(1,2)
x1 =
cell
[1×4 double] %獲取元胞數組的元素,可以理解為元胞的大小
>> x2 = A{1,2}
x2 =
1 2 3 4
>> x3 = A{1,2}(1,4)
x3 =
4
>> x4 = A{2,2}{1}
x4 =
'你好'
————————————————
版權聲明:本文為CSDN博主「aoxiang_ywj」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/baidu_37973494/article/details/86626631
