在Matlab程序编写过程中,总会遇到不同的括号的使用方法,让人很是迷糊,这里对于圆括号(),中括号[],大括号{}的使用方法进行总结,文档来源自百度经验。
例如:A(3)表示A中的第三个元素,A([2,4,5])返回列表[A(2),A(4),A(5)]
K>> A=[10,20,30,40,50];
K>> A(3)
ans =
30
K>> A([2,4,5])
ans =
20 40 50
例如:B(:,2)表示第二列的全部元素,B(1,:)表示第一行的全部元素,B(:)表示B中所有的元素
K>> B=[1,2,3;4,5,6;7,8,9]
B =
1 2 3
4 5 6
7 8 9
K>> B(:,2)
ans =
2
5
8
K>> B(1,:)
ans =
1 2 3
K>> B(:)
ans =
1
4
7
2
5
8
3
6
9
由于数组下标可以是列表,A(1:3)与A([1,2,3])相同,返回[A(1),A(2),A(3)],A(5:-1:1)将5个元素的行向量A逆置了。
K>> A(1:3)
ans =
10 20 30
K>> A(5:-1:1)
ans =
50 40 30 20 10
K>> ones(3)
ans =
1 1 1
1 1 1
1 1 1
K>> (2+3)*5
ans =
25
[]中若干项用空格或者逗号隔开,可以表示一个行向量。
K>> [3,5.5,7,9]
ans =
3.0000 5.5000 7.0000 9.0000
但要注意,如果数组中有项是表达式,不能随意空格。
比如12-3是一个元素,12 -3是两个
K>> [12-3 15+9 3*4]
ans =
9 24 12
K>> [12 -3 15+9 3*4]
ans =
12 -3 24 12
使用中括号[]表示数组时,分号;用来隔开行。用法如下:
K>> [1 2 3;4 5 6]
ans =
1 2 3
4 5 6
K>> [1 2;3 4;5 6]'
ans =
1 3 5
2 4 6
如下我们有两个数组A和B。
[A,B]相当于水平拼接A和B,即horzcat(A,B)
[A;B]相当于垂直拼接A和B,即vertcat(A,B)
K>> A=ones(3)
A =
1 1 1
1 1 1
1 1 1
K>> B=rand(3)
B =
0.2069 0.1843 0.4961
0.4906 0.3008 0.9167
0.1923 0.5922 0.6469
K>> [A,B]
ans =
1.0000 1.0000 1.0000 0.2069 0.1843 0.4961
1.0000 1.0000 1.0000 0.4906 0.3008 0.9167
1.0000 1.0000 1.0000 0.1923 0.5922 0.6469
K>> [A;B]
ans =
1.0000 1.0000 1.0000
1.0000 1.0000 1.0000
1.0000 1.0000 1.0000
0.2069 0.1843 0.4961
0.4906 0.3008 0.9167
0.1923 0.5922 0.6469
使用中括号[]可以进行连续/多层拼接。
比如[C,[A;B]],A与B上下拼接,C与[A;B]左右拼接,效果如下:
K>> [C,[A;B]]
ans =
3.0000 3.0000 1.0000 1.0000 1.0000
3.0000 3.0000 1.0000 1.0000 1.0000
3.0000 3.0000 1.0000 1.0000 1.0000
3.0000 3.0000 0.2069 0.1843 0.4961
3.0000 3.0000 0.4906 0.3008 0.9167
3.0000 3.0000 0.1923 0.5922 0.6469
只有中括号[]表示一个空数组。
A(1,:)=[]表示删去A的第一行;
A(:,1)=[]表示删去A的第一列。
K>> A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
K>> A(1,:)=[]
A =
4 5 6
7 8 9
K>> A(:,1)=[]
A =
5 6
8 9
例如:[C,ia]=setdiff(......)接收两个返回值,存入列表C和列表ia中。
K>> A=[1 2 3 5 7];
K>> B=[2 5 6 8];
K>> [C,ia]=setdiff(A,B)
C =
1 3 7
ia =
1
3
5
例如:A是一个2*2元胞数组cell,使用A(1,1)={[2,3;4,5]}来将A(1,1)赋值为等号右边的列表。
K>> A=cell(2)
A =
2×2 cell 数组
{0×0 double} {0×0 double}
{0×0 double} {0×0 double}
K>> A(1,1)={[2,3;4,5]}
A =
2×2 cell 数组
{2×2 double} {0×0 double}
{0×0 double} {0×0 double}
给元胞数组中的元素赋值,有两种写法:一是A{i,j}=.... 二是A(i,j)=.....
K>> A{1,2}='12www'
A =
2×2 cell 数组
{2×2 double} {'12www' }
{0×0 double} {0×0 double}