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

问题描述 投票:0回答:2

如何通过向波纹管添加新值来逐步增加矩阵维数?

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
matlab octave
2个回答
0
投票

要在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])

0
投票

我创建了一个具有所需元素数量的数组,然后使用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
© www.soinside.com 2019 - 2024. All rights reserved.