Matlab 是否可以加载已保存在.mat文件中的矩阵的单个列?

Matlab 是否可以加载已保存在.mat文件中的矩阵的单个列?,matlab,file-io,Matlab,File Io,我收到了一个大的.mat文件,该文件如下所示: whos('-file','grips.mat') Name Size Bytes Class Attributes grip1 1x1 1662198 struct grip2 1x1 2032758 struct grip3 1x1

我收到了一个大的.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
matObj = matfile('grips.mat')
EMG_signal = matObj.grip6(1,:)
每个抓握都有几个传感器记录的一个人抓握的肌肉信号(EMG)。我只想为其中一个夹点加载其中一个传感器信号。我想执行以下操作,但不起作用:

EMG_signal = load('grips', 'grip6.data(1,:)')
我能得到的最接近的结果是:

EMG_signal = load('grips', 'grip6');
EMG_signal = EMG_signal.grip6.data(1,:);
然而,这需要加载几倍于我需要的数据,然后丢弃它。有简单的捷径吗

这也适用于存储在.mat文件中的对象-当然,我不必加载整个对象来获取其中一个变量(属性)的值


非常感谢。

好问题。看起来这取决于您运行的是哪个版本的Matlab。Mathworks在R2011b中添加了

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

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
matObj = matfile('grips.mat')
EMG_signal = matObj.grip6(1,:)
但正如文件所说

matfile不支持索引到:

  • 结构域

有关Matlab如何不支持从mat文件加载部分矩阵或数组的进一步阅读,请参见此。

将它们分离到多个文件中?即使是索引也无法索引到结构的字段中(不幸的是)-除非您可以重新构造
.mat
文件,我认为你运气不好。如果你必须对同一个数据文件多次这样做,你总是可以将数据再次保存到新文件中,例如:
save('EMG\u grip\u 6\u 1.mat','EMG\u signal')