Matlab将数组转为向量

       

         强大的数组/矩阵操作功能是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




猜你喜欢

转载自blog.csdn.net/leo2351960/article/details/39079557
今日推荐