我想要创建一个二维数组dij(i和j是下标)。我希望能够执行dij = di,j-1 + (di,j-1 - di-1,dj-1) / (4 ^ j-1)。我的想法是先创建两个一维数组,然后将它们组合成一个二维数组。是否有更简单的方法?
我想要创建一个二维数组dij(i和j是下标)。我希望能够执行dij = di,j-1 + (di,j-1 - di-1,dj-1) / (4 ^ j-1)。我的想法是先创建两个一维数组,然后将它们组合成一个二维数组。是否有更简单的方法?
由于n是10,我肯定会像这样预分配数组:
d = zeros(n,n)
然后将您的d(1,1)元素放入,并在循环处理其余行之前显式处理第一行(我猜测您只是不包括处理上一行的项)。
请记住matlab从1开始编号。然后,有用的函数包括
zeros(m,n) % Makes a 2D array with m rows and n columns, filled with zero
ones(m,n) % Same thing with one
reshape(a , m , n) % Turns an array with m*n elements into a m,n square
如果你构建了一个线性数组,但是想将其变成一个方形的数组,那么最后一个函数很有用。(如果你想按列而不是按行计数,使用reshape(a,n,m)'
。)
你还可以对两个向量执行外积:
> [1;2;3]*[1 2 3]
ans =
1 2 3
2 4 6
3 6 9
要按照您所描述的数学方法构建一个数组,您可能需要在至少一个轴上使用for循环进行循环。
dij
公式是基于前一行和列中的值计算的,所以你必须将0行和列初始化为某个值来开始运算。 - gnovice