初始化多维数组和动态扩张

82(30天)
你好,我想 初始化数组 “一个”, 未指定的尺寸和大小 。然后,我继续指定每个维度的大小从而也指定有多少尺寸。它看起来像这样。
一个= [];%初始化是错误的,但是我想初始化它
接下来,我还想指定的大小尺寸和预先配置的零填充整个数组的目的(我没有做过下面)
大小(1)= 5;%这意味着我有第二维度的数组大小5。
大小(2)= 5;%,这意味着我的数组一个三维的大小5。
我有一个模式。所以我想创建一个“对”这样的循环,因为数组的维数取决于长度的对象“ρ{我}”中 单元阵列 ρ的大小1×n。
我= 3:(2 + n)
长度尺寸(我)=(ρ{我}))
结束
在这之后我想要5维数组(假设我有3个对象单元阵列ρ)完全注满零(预先分配)
我想学习的是如何自动索引吗?为例,如果我有一个5 d数组我不想替换所有索引的(我:,:,:)。生成的代码应该是只指定单元阵列中ρ的对象数。然后我想填补我对数字数组。这只是4 d数组的例子,这里有硬编码的所有维度的条目。我想自动化的代码。请注意,n、d、k的都是已知的。
(1::,:)= (2 * d d 0 (1, n) - k (k (1) + (2) k (2) 0 (1, n)];
我= 2:n - 1
(张,我:,)= d;
(我,我,:,)= 3 * d;
(我+ 1,:,)= d;
(n +张,我:,)= k (i);
(n +我:,)= - (2 * k(我)+ k (i + 1));
一个(n +我+ 1::)= k (i + 1);
结束
一个(n::,:) = [0 (1, n) 2 * d 0 (1, n) k (n) 2 * k (n));
任何提示或答案是非常有用的。谢谢你!如果你有不清楚的问题,请找我!

接受的答案

史蒂文的主
史蒂文的主 2020年1月15日
建立你的尺寸向量。理想情况下你有一个上限的数量维度:
upperBoundOnNdims = 10;
upperBoundOnNdims sizeVec = 1 (1);
填写你的尺寸的元素向量无论你想要的。
sizeVec (2) = 3;
sizeVec(3) =输入(“在第三维度:输入大小”);
randi sizeVec (5) = (2 [10]);
一旦你的尺寸向量包含正确的值,使数组的大小由你指定大小的向量。我要做一个与所有元素等于0,但是您可以使用其他功能( , 兰德 等)来创建它。
一个= 0 (sizeVec);
注意所有的元素sizeVec后第五位是1,有五个维度。MATLAB中的数组通常有大量的拖单维度可以查询,但不显示。
ndims (A)% 5
大小(42)% 1
大小(1,e6)% 1
3评论

登录置评。

答案(1)

梅格诺亚
梅格诺亚 2020年1月14日
编辑:梅格诺亚 2020年1月14日
如果你知道你想要的大小:
= 0 (nrow ncol);
= 0 (nrow ncol1、ncol2 ncol3);
等。
也可以对所有的初始化。
= 1 (nrow ncol);
如果你想要所有的初始值是5,
= 5 *的(nrow ncol);
如果你想要所有初始值定义:
=南(nrow ncol);
有一个函数
padarray
可以用来扩展数组已经部分填充。
您还可以使用vertcat horzcat,很简单:
一个= ((nmorrows, 1)的)
等等
2的评论
梅格诺亚
梅格诺亚 2020年1月15日
padarray可以用来延长你的数组大小
或者你可以附加或预先考虑阵列使用,例如,
ncol = [0 (1))
如果你贴代码,而不只是一个片段,它woudld更容易找出你失踪。

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!