示例
同一类的元素通常可以连接成数组(有一些罕见的例外,例如函数句柄)。数值标量(默认为class double)可以存储在矩阵中。
>> A = [1, -2, 3.14, 4/5, 5^6; pi, inf, 7/0, nan, log(0)]
A =
1.0e+04 *
0.0001 -0.0002 0.0003 0.0001 1.5625
0.0003 Inf Inf NaN -Inf
char在MATLAB中属于类的字符也可以使用类似的语法存储在数组中。这样的数组类似于许多其他编程语言中的字符串。
>> s = ['MATLAB ','is ','fun']
s =
MATLAB is fun
请注意,尽管两者都使用方括号[和],结果类却不同。因此,可以对它们执行的操作也不同。
>> whos
Name Size Bytes Class Attributes
A 2x5 80 double
s 1x13 26 char
事实上,该阵列s是不是字符串数组'MATLAB ','is '和'fun',它仅仅是一个字符串-的13个字符数组。如果由以下任何一项定义,您将获得相同的结果:
>> s = ['MAT','LAB ','is f','u','n'];
>> s = ['M','A','T','L','A','B,' ','i','s',' ','f','u','n'];
常规的MATLAB向量不允许您混合使用不同类的变量或几个不同的字符串。这是cell阵列派上用场的地方。这是一个单元格数组,每个单元格可以包含一些MATLAB对象,如果需要,每个单元格中的类可以有所不同。使用花括号{并将其}周围的元素存储在单元格数组中。
>> C = {A; s}
C =
[2x5 double]
'MATLAB is fun'
>> whos C
Name Size Bytes Class Attributes
C 2x1 330 cell
任何类的标准MATLAB对象都可以一起存储在单元格数组中。请注意,单元阵列需要更多的内存来存储其内容。
使用大括号{和可以访问单元格的内容}。
>> C{1}
ans =
1.0e+04 *
0.0001 -0.0002 0.0003 0.0001 1.5625
0.0003 Inf Inf NaN -Inf
请注意,C(1)与有所不同C{1}。后者返回单元格的内容(并double在示例中包含类),而前者返回的单元格数组是的子数组C。同样,如果D是10×5的单元格数组,D(4:8,1:3)则将返回D大小为5×3且类为的子数组cell。而且语法C{1:2}没有单个返回的对象,但是评分器返回两个不同的对象(类似于具有多个返回值的MATLAB函数):
>> [x,y] = C{1:2}
x =
1 -2 3.14 0.8 15625
3.14159265358979 Inf Inf NaN -Inf
y =
MATLAB is fun