一直以为matlab中没有动态数组,或者类似C++的vector容器的数据结构。其实不然,matlab的数组就是一个动态数组,它可以当作vector,或者队列等数据结构使用。

array = 1:10;
array =

     1     2     3     4     5     6     7     8     9    10

array(1) = [];
array =

     2     3     4     5     6     7     8     9    10

array(end) = [];
array =

     2     3     4     5     6     7     8     9

array(end+1) = 10;
array =

     2     3     4     5     6     7     8     9    10

上面的例子可以看出,只要令数组的某一个元素为[],就相当于删除了数组中该元素。array(1) = [] 这条语句,就类似于队列的pop()操作,array(end) = [] 相当于堆栈的pop()操作,而array(end+1)  = 10 就相当于push()操作。

2. 数组的一些操作技巧

2.1 在数组中找到某个特定元素的索引

a = [1 2 3 3 4 5];
i = find(a==3)

i =

     2     3

 2.2 数组切片

a = [1 2 3 4 5 6];
a(2:4) 
ans =
     2     3     4

a(a>3)
ans =
     4     5     6

二维数组切片

mat =

    11    12    13    14
    21    22    23    24
    31    32    33    34
    41    42    43    44

>> mat(2:3, 1:2)
ans =
    21    22
    31    32

>> mat(mat(:,1)>30, :)
ans =
    31    32    33    34
    41    42    43    44

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐