【问题标题】:How do you make a 2-d array in Matlab?你如何在 Matlab 中制作一个二维数组?
【发布时间】:2011-01-26 16:44:49
【问题描述】:

我想制作一个二维数组 dij(i 和 j 是下标)。我希望能够做到 dij = di,j-1+(di,j-1 - di-1,dj-1)/(4^j-1) 我对此的想法是制作一维数组,然后将它们组合成一个二维数组。有没有更简单的方法来做到这一点?

【问题讨论】:

  • 请澄清您的问题。构造数组的起始数据是什么?
  • 数组 dij 是一个二维数组 0:nx0:n 例如 dij = [0:n;0:n]
  • 顺便问一下 n 有多大?
  • 我认为 Leo 的意思是:第 0 行和第 0 列的起始值是多少? dij 的公式是前一行和前一列中值的函数,因此您必须将第 0 个值初始化为某个值才能开始。

标签: arrays matlab multidimensional-array


【解决方案1】:

由于 n 是 10,我肯定会像这样预分配数组:

d = zeros(n,n)

然后放入您的 d(1,1) 元素并明确处理您的第一行(我猜您只是不包括处理前一行的术语),然后循环遍历其余行。

【讨论】:

    【解决方案2】:

    记住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 循环在至少一个轴上对其进行循环。

    【讨论】:

      猜你喜欢
      • 2019-04-29
      • 2019-01-11
      • 1970-01-01
      • 2019-02-19
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多