Matlab 是否可以加载已保存在.mat文件中的矩阵的单个列?
我收到了一个大的.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
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')