强大的数组/矩阵操作功能是Matlab的最强大的优势之一。得益于此,大多数情况下,用户不需要考虑变量、循环这些繁琐的代码形式,只需要把数据填到一个数组里去就行。所以通常存储数据是这样的:
a=[1 2 3
4 5 6
7 8 9];
这样的排列让数据一目了然。问题是程序常常可能需要把数据转为向量再操作,用循环肯定是可以实现的,但Matlab里还有更简便的办法,目前找到两种,如下所示。
》》》最简单的是
a=a(1:end)
a =
1 4 7 2 5 8 3 6 9
这里看到我们用逻辑索引将数组a转化为向量形式,逻辑索引是按列排序的,如果要按行排列成行向量,只需要把a转置即可。
a=a';
a=a(1:end)
a =
1 2 3 4 5 6 7 8 9
》》》Matlab也为用户提供了一个reshape函数,通过reshape函数,你可以将数组转化为同样元素数量的任意Size的数组。
B=reshape(A,m,n) %将数组A转化为一个m×n的数组B %注意:m×n必须等于A的元素数量 B=reshape(A,[m,n,p....]) %将数组A转化为一个m×n×p×...的多维数组B |
b =[
1 2 3
4 5 6
7 8 9
10 11 12];
reshape(b,2,6)
ans =
1 7 2 8 3 9
4 10 5 11 6 12
reshape(b,3,4)
ans =
1 10 8 6
4 2 11 9
7 5 3 12
reshape(b',3,4)
ans =
1 4 7 10
2 5 8 11
3 6 9 12