【问题标题】:Encode & decode 2D cell array in matlab does not match original data format在matlab中编码和解码二维单元阵列与原始数据格式不匹配
【发布时间】:2017-10-11 00:47:05
【问题描述】:

我正在使用 Matlab 2017b 并且在编码和解码二维元胞数组时遇到了一些问题;当我编码和解码时,我得到的输出与原始输出不同。

data = 
  279x62 cell array

jsonencode(data) = 
  ['cell1','cell2','cell3' ... etc ]

jsondecode(ans) = 
  17298x1 cell array

我也尝试将矩阵转换为字符串,但得到了一个 279x1 的 62x1 单元格的调用数组。有什么方法可以格式化数据以确保从 jsondecode 生成 2D 数组,匹配输入到 jsonencode?​​p>

最终,我会将编码的 json 对象传递给 .NET 应用程序,但我需要将其解码为二维数组。我觉得一定有一些简单的东西我忽略了,但我很困惑,任何建议都将不胜感激。

【问题讨论】:

    标签: .net json matlab multidimensional-array


    【解决方案1】:

    一个简单的reshape 应该可以做到。请注意,jsonencode 将展平您的输入二维元胞数组,以便所有列都堆叠成一个数组。因此,使用此输出的jsondecode 将返回一维元胞数组。因此,将其重组回279 x 62 的二维矩阵。假设 data 已在您的工作区中创建:

    % Encode the data
    D = jsonencode(data);
    
    % Decode it
    out = reshape(jsondecode(D), size(data));
    

    请注意,我使用了size(data),而不是硬编码重塑的尺寸,以便在创建 JSON 文本之前,它可以适应 data 元胞数组的任何大小。

    【讨论】:

    • 感谢 matlab 的工作,但这是否意味着无法使用 Newtonsoft Json 在 .NET 中直接解码并获得二维数组?我认为编写自定义解码是可能的,但我尽量保持通用。
    • 不幸的是,我不熟悉该框架。我只使用 MATLAB 回答,因为我认为这是您使用的主要框架。
    猜你喜欢
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 2012-07-04
    • 2019-12-05
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多