【问题标题】:Converting Rows into Columns in a cell array in MATLAB在 MATLAB 中将单元格数组中的行转换为列
【发布时间】:2020-06-19 17:02:20
【问题描述】:

我有一个 99x1 元胞数组,例如,我想将其转换为 33x3 元胞数组。

我希望 99x1 元胞数组的前 3 行构成 33x3 元胞数组的第一行,然后 99x1 元胞数组的第 3 到第 6 行构成 33x3 元胞数组的第二行。

我还需要数据在被重新整形以在数据下降之前逐列遍历。例如我需要:

1 2 3 4

成为

1, 2; 3、4

不是

1, 3; 2、4

非常感谢您的帮助

【问题讨论】:

  • 细胞结构重要吗?或者每个单元格是否具有相同的行\列数?我首先认为一个简单的reshape(yourcell,33,3) 会起作用,但我认为你可能想要别的东西......一个简单的最小例子会澄清你的问题。
  • 这行得通,但是我需要数据在被重塑时逐列遍历,然后再下降。例如我需要:
  • @young_coder 不正是我回答中的解决方案的作用吗?!
  • 也许您的示例过于简单,但为什么您需要将数据放在元胞数组中?如果可能的话,使用普通数组更快更简单。
  • @Max 是的,很抱歉,您的代码运行良好。我想。当我将它复制到我的代码时,它在 reshape 函数中。我的错误,感谢您的帮助,我很感激。

标签: arrays matlab cell rows


【解决方案1】:

您可以简单地使用reshape-函数。由于reshape(yourcell,[],3) 将首先填充第一列,然后是第二列,依此类推,而不是逐行填充,因此您需要将其与转置运算符.' 结合使用:

newcell=reshape(yourcell,3,[]).'

这样,您将首先使用reshape 创建一个3x33 单元格,然后将其转换为所需的33x3 单元格。 [] 告诉 reshape 根据需要创建尽可能多的列。

【讨论】:

    猜你喜欢
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    相关资源
    最近更新 更多