将matlab数据导入到Python中使用

相信不少小伙伴都遇到过和我一样的问题,就是在尝试使用scipy.io.loadmatmatlab类型的数据导入python中的时候遇到如下错误提示。

import scipy as sc

# 设定需要导入的matlab数据目录
path_TE00 = r"D:\Window自带文件夹\桌面\PIC Design\Lumerical\Tutorials\T02_Taper_2D_PropagateAlongX\taper_modes.mat"
# 读取.mat类型数据
data = sc.io.loadmat(path_TE00)
Traceback (most recent call last):
  File "D:\Window自带文件夹\桌面\Calculation\debug.py", line 14, in <module>
    data = sc.io.loadmat(path_TE00)
  File "D:\Study Softwares\Python 3.9.11\lib\site-packages\scipy\io\matlab\_mio.py", line 225, in loadmat
    MR, _ = mat_reader_factory(f, **kwargs)
  File "D:\Study Softwares\Python 3.9.11\lib\site-packages\scipy\io\matlab\_mio.py", line 80, in mat_reader_factory
    raise NotImplementedError('Please use HDF reader for matlab v7.3 files')
NotImplementedError: Please use HDF reader for matlab v7.3 files

这个提示的意思就是说,当matlab的版本高于7.3时,使用sc.io.loadmat()去导入matlab文件就变得不可行了。并且提示了我们应该使用HDF reader包去解决这个问题。我相信有很多小伙伴去尝试了,但是依然无法导入,这里做一下说明。首先,在windows命令行中使用如下命令安装HDF reader包。具体教程可以查看------Python 使用pip在windows命令行中安装HDF reader包(超链接点击跳转)。

之后使用如下命令代码即可:

# 导入HDF reader包
import h5py

# 设定需要导入的matlab数据目录
path_TE00 = r"D:\Window自带文件夹\桌面\PIC Design\Lumerical\Tutorials\T02_Taper_2D_PropagateAlongX\taper_modes.mat"
# 读取.mat类型数据
modes = h5py.File(path_TE00, "r")
# 获取导入的matlab数据
data_modes = modes.get('modes')
# 将导入的数据转换为ndarray格式
data_modes_final = np.array(data_modes)
# 打印导入后的数据
print(data_modes_final)
"""
result:
[[ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
  19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
  37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50.]]
"""

需要注意,data_modes = modes.get('modes')语句中的参数'modes'表示的是在matlab工作区中用于保存数据的变量名称,这个一定要注意,如果变量名称给错了,那仍然无法读取到数据,会得到一个None的返回值。对应modes的变量如下图所示:
请添加图片描述
注意:参数是变量名,变量名,变量名,重要的事情说三遍。

上面是导入一般类型的数据,通常数据导入后在python中以一个二维数组显示。但是对于复数类型的数据,导入python后还需要进行一个复数类型转换,读者可以自行研究,如果有遇到相同问题解决不了的,可以在评论区留言给我,后续我会添加复数数据的导入操作方法。

如果大家觉得有用,就点个赞让更多的人看到吧~

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋的大熊猫

你的鼓励将是我写作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值