python中错误useofeval_在python中读取文件v7.3mat

尽管进行了数小时的搜索, 但我还没有找到如何访问Matlabv7.3的结构。希望答案的这一部分对某人有所帮助, 我很高兴看到更多说明。

因此, 让我们开始吧(我认为[0][0]来自Matlab, 提供了所有尺寸):

f = h5py.File('filename', 'r')

f['varname'][0][0]

给出: < HDF5 object reference >

再次将此链接传递给f:

f[f['varname'][0][0]]

它提供一个数组: 将其转换为numpy数组并提取值(或递归获取另一个< HDF5 object reference >:

np.array(f[f['varname'][0][0]])[0][0]

如果磁盘访问缓慢, 则可以将其加载到内存中。

进一步的编辑: 经过大量无用的搜索之后, 我的最后一个解决方案(我真的希望有人可以有更好的解决方案! )是从python调用Matlab, 这是非常简单和快速的:

eng = matlab.engine.start_matlab() # first fire up a Matlab instance

eng.quit()

eng = matlab.engine.connect_matlab() # or connect to an existing one

eng.sqrt(4.0)

x = 4.0

eng.workspace['y'] = x

a = eng.eval('sqrt(y)')

print(a)

x = eng.eval('parameterised_function_in_Matlab(1, 1)', nargout=1)

a = eng.eval('Structured_variable{1}{2}.object_name') # (nested cell, cell, object)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值