如何通过向波纹管添加新值来逐步增加矩阵维数?
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修剪了尾随的单身尺寸,最后一个尺寸不能为单身,这意味着您的数组必须始终至少包含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