在MATLAB中,如果要创建一个一维动态数组,代码如下:
a = [];
A = [1 2 3 4 5 6 7 8 9];
for i = 1:9
a = [a A(1:end,i)];
end
数组a[]是初始动态数组,A[]数组是一系列数据,将A[]里的元素插入到动态数组a[]当中。
如果要创建n维动态数组,代码如下:
a = [0;0;0];
A = [1 2 3;4 5 6;7 8 9];
for i = 1:3
a = [a A(1:end,i)];
end
初始化的动态数组a[]可以标明数组的维度,
也可以不标明,直接用空数组(a = [];)即可。
一直以为
matlab
中没有
动态数组
,或者类似C++的vector容器的数据结构。其实不然,
matlab
的数组就是一个
动态数组
,它可以当作vector,或者队列等数据结构使用。
array = 1:10;
array =
1 2 3 4 5 6 7 8 9 10
array(1) = [];
array =
我的需求是一个可以动态改变大小的三维数组,但是
matlab
要求三维数组每页大小必须相等(类比二维数组每行的列数必须相等),于是需求不能实现,决定用cell来代替
1 元胞示例
例:我要存五个二维数组:
[1 2;3 4]、[1 2 3 ;4 5 6]、[1 2 3 4;5 6 7 8]、[1 2 3 4 5;6 7 8 9 0]、[1;2]
>> c=cell(1,5)
1×5 cell 数组
[] [] [] [] []
MATLAB
是一种计算机的高级解释
语言
。我们学习C++时有一个
动态数组
的概念,可以实时增加行或列项,它以“new”来实现。
MATLAB
的
动态数组
则是在切片中使用“end+n”的形式实现,n是一个正整数。下面来看看两个实例:
Exp1:
a=[1,2;2,3]
每次经过 for 和 while 循环时,这些循环都会递增数据结构体的大小,这会对性能和内存的使用产生不利影响。反复重新调整数组大小往往需要
MATLAB
花费额外的时间来寻找更大的连续内存块,然后将数组移入这些块中。通常,您可以通过预分配数组所需的最大空间量来缩短代码的执行时间。
下面的代码显示了
创建
标量变量 x,然后在 for 循环中逐步增加 x 大小所需的时间量。
x = 0;
for k = 2:1000000
x = [x x(k-1) + 5];
数组是
Matlab
进行计算和处理的核心内容之一,处于快速计算的需要,
Matlab
总是把数组看作存储和运算的基本单元。
一、一维数组的
创建
(1)直接输入法:可以通过逗号,空格来分割数组元素。
(2)步长生成法:x=a:inc:b其中a,b为其中一维数组的起始数值和终值数值,inc为间隔的步长。(如果a,b为整数时,省略inc,可以生成步长为1的数组)
(3)等间距线生成方法