【问题标题】:reshaping and re-arranging array using octave / matlab使用 octave / matlab 重塑和重新排列数组
【发布时间】:2017-03-17 16:41:07
【问题描述】:

我正在尝试重塑一个数组,执行一个操作,然后将其重塑回原来的形状。请参阅我试图获得的输出示例。我可以得到ab,但我无法让c 再次看起来像a

步骤1)(原始数组)

    1                     1                     1
    2                     2                     2
    3                     3                     3
    4                     4                     4
    5                     5                     5

第2步)(重塑并执行一些操作)

1,1,1,2,2,2,3,3,3,4,4,4,5,5,5

第 3 步)(数组被重新调整为原始大小,看起来像 step 1这就是我想要的

    1                     1                     1
    2                     2                     2
    3                     3                     3
    4                     4                     4
    5                     5                     5

我可以获得变量 ab,但我不确定如何将 cb 重塑为 a 再次查看示例代码和下面的输出

a=[repmat(1,[1,3]);repmat(2,[1,3]);repmat(3,[1,3]);repmat(4,[1,3]);repmat(5,[1,3])]
[rw,col]=size(a)
b=reshape(a',1,rw*col)
c=reshape(b,rw,col)

a=
        1                     1                     1
        2                     2                     2
        3                     3                     3
        4                     4                     4
        5                     5                     5

b=1,1,1,2,2,2,3,3,3,4,4,4,5,5,5


c =

                     1                     2                     4
                     1                     3                     4
                     1                     3                     5
                     2                     3                     5
                     2                     4                     5

Ps:我使用的是 Octave 4.0,类似于 Matlab。

【问题讨论】:

    标签: arrays matlab octave reshape


    【解决方案1】:

    MATLAB 和 Octave 使用以列为主的排序,因此您需要考虑到这一点来重塑结果。数据将首先填充,但您希望它首先填充。为此,您可以将列数指定为提供给reshape 的行数,然后转置结果

    c = reshape(b, 3, []).'
    

    或者更灵活

    c = reshape(b, flip(size(a))).'
    

    【讨论】:

      猜你喜欢
      • 2016-08-28
      • 2014-08-05
      • 1970-01-01
      • 2011-10-31
      • 2014-04-21
      • 2016-01-11
      • 2016-04-22
      • 1970-01-01
      相关资源
      最近更新 更多