2

我得到了一个大的 .mat 文件,如下所示:

whos('-file','grips.mat')
  Name       Size               Bytes  Class     Attributes

  grip1      1x1              1662198  struct              
  grip2      1x1              2032758  struct              
  grip3      1x1              1660278  struct              
  grip4      1x1              1650678  struct              
  grip5      1x1              1607478  struct              
  grip6      1x1             63353718  struct

每个抓握都有几个记录的人抓握的肌肉信号 (EMG),来​​自多个传感器。我只想为这些手柄之一加载这些传感器信号之一。我想执行以下操作,但它不起作用:

EMG_signal = load('grips', 'grip6.data(1,:)')

我能得到的最接近的是:

EMG_signal = load('grips', 'grip6');
EMG_signal = EMG_signal.grip6.data(1,:);

然而,这涉及加载数倍于我需要的数据,然后丢弃它。有没有简单的捷径?

这也适用于存储在 .mat 文件中的对象——当然我不必加载整个对象只是为了获取其变量(属性)之一的值。

非常感谢。

4

1 回答 1

2

很好的问题。看起来这取决于您运行的是哪个版本的 Matlab。从 R2011b 开始, Mathworks 添加了matfile 函数

但不幸的是,您的具体问题仍然无法解决,因为您有结构而不是直接存储的矩阵。如果“grip6”是一个矩阵,您可以像这样访问子矩阵:

matObj = matfile('grips.mat')
EMG_signal = matObj.grip6(1,:)

但正如文件所说,

matfile 不支持索引到:

  • 结构体字段

有关 Matlab 如何不支持从 mat 文件加载部分矩阵或数组的进一步阅读,请参阅这个matlab 中心线程

于 2012-08-14T02:45:35.347 回答