【问题标题】:Parsing data from .mat file and putting them to a matrix in Matlab从 .mat 文件中解析数据并将它们放入 Matlab 中的矩阵
【发布时间】:2020-09-21 10:21:58
【问题描述】:

我有一个 .mat 文件,其中包含以 4 行 100 列的类 excel 结构排列的数据。

我想要的是把这 100 列中的每一列放入一个 2x2 矩阵 A(:,:,j),其中 j = 1:100,在一个 .m 文件中,这样我就可以运行我的代码处理该数据。

我该怎么做?

编辑:当我在命令窗口使用时

load C:\...\file.mat 

我在工作区窗口中获得了变量的名称(比如说,fileVariable),它的值是 。

当我在 .m 文件中使用时

S = load('C:\...\file.mat');
S

并运行脚本,在工作区窗口中,我得到变量 (S) 的名称,并且该变量 S 的类型为 。

在这两种情况下,这都不是我想要的——我无法在 .m 文件中操作任何这些东西(例如,与矩阵相比)。

我以前没有使用过 .mat 文件,这对我来说是新的。我刚从同事那里得到这个项目的 .mat 文件作为输入,我必须使用它。

【问题讨论】:

  • 您基本上已经在问题中写下了答案。 SO 不是代码编写服务,您尝试过什么,有什么问题?
  • 我不明白你的意思。让我重新表述我的问题。当我在 Matlab 的命令窗口加载这个 .mat 文件时,我得到一个 4x100 复数双变量。在 .m 文件中,我无法将此变量分配给 4x100 数组。当我使用 A = load('file.mat') 时,我得到的不是 4x100 数组 [A1 A2 ... A100]。
  • 这甚至不是同一个问题。请使用示例编辑您的问题,以便我们了解您的问题。
  • 请再次阅读我原来的问题。它说的与我之前的评论完全相同。我想从 .mat 文件中取出这 100 列并将它们放入 2x2 矩阵 A(:,:,j) 中。但是首先,让我们说,为了更容易,我想把这个 4x100 变量放在一个 4x100 数组 A 中。我想强调的是,我的问题不在于将 4x100 数组转换为 2x2 的算法矩阵。我的问题是 .mat 文件给了我某种“结构”或其他任何东西,而这在 .m 文件中作为数组或矩阵是不可操作的。
  • 哈哈。您最初的问题说您有一个 4x100 数组并且没有提及结构。您的第一条评论说您没有得到 4x100 数组并且仍然没有提及结构。我想这说明了同样的事情,即使它根本没有。直到您的第二条评论才提到与您的实际问题相关的详细信息:您的数据作为结构加载。也许这些重要的细节可以很好地包含在您的问题中。

标签: matlab matrix mat


【解决方案1】:

假设您使用输出变量调用 load,则所描述的行为在文档中得到了很好的定义:

S = load(___) 将数据加载到S,使用任何输入参数 上一个语法组。

如果filename 是一个MAT 文件,那么S 是一个结构体数组。

如果filename 是一个ASCII 文件,那么S 是一个包含文件数据的双精度数组。

由于您正在加载*.mat 文件,因此您将获得structure arrayYou access data in a structure array 使用点表示法以及任何有效的 MATLAB 索引语法。

由于您没有提供任何内容来重现您的问题,以下是文档中的一个示例:

S = load('clown.mat')
upperLeft = S.X(1:50,1:80);
image(upperLeft);

绘制完整图像的子集。

【讨论】:

  • 谢谢!我不知道!这实际上给了我一个 4x100 矩阵!现在我只需要将它分成 100 (2x2) 个矩阵,但这是另一个问题,可能需要另一个问题.....
  • 是的,这将是一个单独的问题。在你问之前先试试reshape
  • 好的,我会试试的。再次感谢!
猜你喜欢
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
  • 2021-06-11
  • 2015-06-11
  • 2016-03-15
  • 1970-01-01
  • 2014-04-16
  • 1970-01-01
相关资源
最近更新 更多