如何通过向矩阵添加新值来逐步增加矩阵维度,如下所示?
octave:1> A = 1;
octave:2> A(1,2) = 1;
octave:3> A(1,1,2) = 1;
octave:4> A(1,1,1,2) = 1;
octave:5> A(1,1,1,1,2) = 1;
octave:6> A(1,1,1,1,1,2) = 1;
...
and so on, N times
要在Octave中创建任意维数的数组,只需使用vec
。像这样:
n = 7; # number of dimensions
x = [1 1]; # you must have at least two elements
vec (x, n)
因为Octave修剪了后面的singleton维度,所以最后一个维度不能是singleton,这意味着数组必须始终至少有2个元素。
或者,您也可以在使用ones
或类似函数创建数组时指定大小,并以编程方式计算大小:
n = 7;
x = ones ([repmat(1, 1, n-1) 2])
我创建了一个具有所需元素数量的数组,然后使用reshape
将其设置为所需维度。然后,为了设置每个元素,有必要使用线性索引,因为代码需要针对任意数量的维度运行。
c=zeros(1,2^m);
if m > 1, c=reshape(c,2*ones(1,m)); endif;
c(1)=1;
for i=0:m-1, c(2^i+1)=1; endfor
例如,如果m = 4
,我们将获得所需的结果
octave:6> [c(1,1,1,1), c(2,1,1,1), c(1,2,1,1), c(1,1,2,1), c(1,1,1,2)]
ans =
1 1 1 1 1