【问题标题】:Extracting and arranging nested data within cell array在元胞数组中提取和排列嵌套数据
【发布时间】:2015-11-12 11:53:27
【问题描述】:

我需要将 CDF(通用数据格式)文件引入 MATLAB。为此,我使用了 [cdfread][1] 命令。下面附上我的输出图像:

当我打开 data_import 时,第 4 列和第 5 列采用特定的 3 x 1 格式(如 data_import(1,4) 所示)。

我的问题是:有没有一种简单的方法来提取第 4 列中每个单元格的数据,这样对于data_import(1,4) 中的第 2 行,它将作为新列(即第 5 列)插入到原始数据中(data_import)?同样,data_import(1,4) 中的第 3 行应作为新列(第 6 列)插入到原始数据 (data_import) 中。此过程也应在原始第 5 列数据中重复,该数据在每个单元格中也具有类似的3 x 1 结构。

我希望我所描述的内容不会太含糊,但我真的不确定我应该对调用操作的命令做什么。提前谢谢你。

【问题讨论】:

    标签: matlab netcdf cdf


    【解决方案1】:

    您所需的最终输出包含由这些单元格组成的列,这些单元格从 3 x 1 数组转换为 1 x 3 单元格数组,然后连接到每一行。首先用“错误的方式”连接元素然后转置最终结果更容易:

    data_import = [data_import(:,1:3) num2cell([data_import{:,4}; data_import{:,5}]') data_import(:,6:end)];
    

    【讨论】:

    • 您需要重新调整您的horzcat 调用,否则会出错。
    • 它们被重塑了——' 运算符将horzcat 的结果从3 x n 转换为n x 3
    • 不,它没有。 horzcat 的输出是 1 x n
    • 我做到了,也做到了。您似乎在回答中假设单元格的内容是1 x 3,这不是问题所在。但是就我而言,我认为它是一个 3 x 1 单元格数组,但事实并非如此,所以我原来的示例确实会失败。
    • 感谢您对这个解决方案的及时讨论,这正是我所需要的。也将借此机会了解有关该解决方案的更多信息。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多