多维数组

优质
小牛编辑
133浏览
2023-12-01

MATLAB中的多元数组MATLAB是下标多于两个的数组。可以调用带有两个以上变元的zeros, ones, rand, 或randn函数来产生。例如,

    R = randn(3,4,5);
    

生成一个3*4*5的数组,共有3x4x5 = 60个正态分布的随机元素。

三维数组可能表示三维物理数据,譬如房间的温度,取样于一个长方形网格。或者,可表示一个矩阵序列A(k),或依赖时间变化的矩阵A(t)。在后面这些情形中,第k个矩阵的第(i, j)个元素用A(i,j,k)表示。

4阶魔方的MATLAB和杜勒的版本不同在于交换了两列。许多魔方可以通过交换列产生。语句

    p = perms(1:4);
    

生成4! = 24个1:4的排列。第k个排列是行矩阵p(k,:),那么

    A = magic(4);
    M = zeros(4,4,24);
    for k = 1:24
       M(:,:,k) = A(:,p(k,:));
    end
    

在三维数组M中保存有24项的魔方序列。M的大小为

    size(M)
    
    ans =
         4     4    24
    
    
    
    

生成的序列中第三个是杜勒的。

    M(:,:,3)
    
    ans =
        16     3     2    13
         5    10    11     8
         9     6     7    12
         4    15    14     1
    

语句

    sum(M,d)
    

通过改变第d个下标计算和。因此

    sum(M,1)
    

是一个1*4*24的数组,包含24个相同的以下行向量

    34    34    34    34
    

    sum(M,2)
    

是一个4*1*24的数组,含有24个相同的以下列向量。

    34
    34
    34
    34
    

最后,

    S = sum(M,3)
    

把序列中的24个矩阵相加。结果的尺寸是4*4*1,故看起来象4*4数组。

    S =
       204   204   204   204
       204   204   204   204
       204   204   204   204
       204   204   204   204