关于MATLAB数组指令涵义的问题。很基础的几道题。求帮助 10
(1)A(3,2): 。
(2)A(9): 。
(3)A(1:3:10): 。
(4)A([1,2],[2,3]): 。
(5)A(:,[4,3]): 。
(6)A([1 1 2],:): 。
(7)A(A>3): 。
(8)A(end:-2:1,:): 。
(9)A([1 3 5 2 4]): 。
(10)reshape(A,4,3): 。 展开
这些都属于很基础的内容,建议楼主自己生成一个矩阵,然后执行这些命令,看结果是怎样的,好好体会一下。
(1)A(3,2):提取矩阵的第3行、第2列元素。
(2)A(9):提取矩阵的第9个元素(也就是第3行、第3列)。
(3)A(1:3:10):提取矩阵的第1、4、7、10个元素(也就是第1行)。
(4)A([1,2],[2,3]):提取矩阵的第1~2行、第2~3列的4个元素构成子矩阵。
(5)A(:,[4,3]):提取矩阵的第4、3列元素构成子矩阵。
(6)A([1 1 2],:):提取矩阵的第1、1、2行元素构成子矩阵。
(7)A(A>3):提取矩阵值大于3的元素构成列向量。
(8)A(end:-2:1,:):提取矩阵的第3行和第1行元素构成子矩阵 。
(9)A([1 3 5 2 4]):提取矩阵的第1、3、5、2、4个元素构成子矩阵。
(10)reshape(A,4,3):把矩阵变成4x3的矩阵。
需要说明的几点:
(1)MATLAB矩阵的元素可以用行、列两个下标索引,也可以用单个下标索引,此时会把矩阵看成一个向量。值得注意的是,MATLAB数组是以列序为主序的(和Fortran相同,但不同于C),也就是说,A(2)指的是A(2,1)而不是A(1,2)。第2、3、7、9、10题都涉及这个问题。
(2)第7题的A>3得到结果是逻辑数组,作为下标使用时,表示提取逻辑真的那些位置。
(3)end作为数组下标使用时,表示其所在维的长度,例如,第8题出现在行下标中,就表示3。
(4)数组下标出现单独的冒号(:)作用等同于1:end,即该维的所有值,例如第5题的冒号表示所有行,第6、8题的冒号表示所有列。
例如:
>> A=reshape(1:12,[3 4])
A =
1 4 7 10
2 5 8 11
3 6 9 12
>> A(1:3:10)
ans =
1 4 7 10
>> A([1,2],[2,3])
ans =
4 7
5 8
>> A(:,[4,3])
ans =
10 7
11 8
12 9
>> A([1 1 2],:)
ans =
1 4 7 10
1 4 7 10
2 5 8 11
>> A(A>3)
ans =
4
5
6
7
8
9
10
11
12
>> A(end:-2:1,:)
ans =
3 6 9 12
1 4 7 10
>> A([1 3 5 2 4])
ans =
1 3 5 2 4
>> reshape(A,4,3)
ans =
1 5 9
2 6 10
3 7 11
4 8 12
A = reshape(1:12,3,4) % 构造A矩阵
ans1 = A(3,2)
ans2 = A(9)
ans3 = A(1:3:10)
ans4 = A([1,2],[2,3])
ans5 = A(:,[4,3])
ans6 = A([1 1 2],:)
ans7 = A(A>3)
ans8 = A(end:-2:1,:)
ans9 = A([1 3 5 2 4])
ans10 = reshape(A,4,3)
以下是结果:
A =
1 4 7 10
2 5 8 11
3 6 9 12
ans1 =
6
ans2 =
9
ans3 =
1 4 7 10
ans4 =
4 7
5 8
ans5 =
10 7
11 8
12 9
ans6 =
1 4 7 10
1 4 7 10
2 5 8 11
ans7 =
4
5
6
7
8
9
10
11
12
ans8 =
3 6 9 12
1 4 7 10
ans9 =
1 3 5 2 4
ans10 =
1 5 9
2 6 10
3 7 11
4 8 12