如何在Matlab/Octave中逐步增加矩阵的维数

  • 本文关键字:增加 Matlab Octave matlab octave
  • 更新时间 :
  • 英文 :


如何通过向矩阵添加新值来逐步增加矩阵维度,如下所示?

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

相关内容

  • 没有找到相关文章

最新更新