请解释这种琐碎重塑的行为

时间:2016-07-20 02:07:11

标签: arrays matlab

示例数据:

tmp = reshape(magic(4), 1, 4, 4)

并且正在运行tmp(1, :, :)

>> tmp(1, :, :)

ans(:,:,1) =

    16     5     9     4


ans(:,:,2) =

     2    11     7    14


ans(:,:,3) =

     3    10     6    15


ans(:,:,4) =

    13     8    12     1

我的困惑是我期待显示4x4阵列magic(4)。以下让我感到困惑:

  1. i tmp(:,:,i)magic(4) is being displayed as a row in大小的, so that列(tmp(:,:,i))`返回1 x 4。
  2. 如果我尝试使用magic(4)检索tmp(:, 1, :)的第一行,我会得到四个单独的结果。
  3.     
    ans(:,:,1) =
    
        16
    
    
    ans(:,:,2) =
    
         2
    
    
    ans(:,:,3) =
    
         3
    
    
    ans(:,:,4) =
    
        13
    

    我查看了help page on multidimensional arrays中的下图,但我无法理解为什么尝试获取magic(4)的常用列和行子集分别返回一行和各个元素。我希望tmp(:, i, :)返回imagic(4)行,tmp(:, :, j)返回jmagic(4)$ echo -e "GET /-/system/get_health HTTP/1.1\n\n" | nc 127.0.0.1 8840 {"status": "HEALTHY"} $

    matlab 3d array illustration

1 个答案:

答案 0 :(得分:1)

你做得很好,你只是误解了matlab的提示。

当你执行tmp(:,1,:)时,你得不到4个单独的结果,你得到一个形状1x1x4的结果,但由于Matlab不能以3维打印,它会打印每个" page"。您可以通过执行以下操作来检查:

x=temp(:,1,:);

size(x)
% ans =
% 1     1     4

如果要将其查看到一列,可以执行类似

的操作
x(:)
%ans =
% 16
%  2
%  3
% 13