如何將matlab數(shù)據(jù)導(dǎo)入到Python中使用
相信不少小伙伴都遇到過和我一樣的問題,就是在嘗試使用scipy.io.loadmat將matlab類型的數(shù)據(jù)導(dǎo)入python中的時(shí)候遇到如下錯(cuò)誤提示。
import scipy as sc # 設(shè)定需要導(dǎo)入的matlab數(shù)據(jù)目錄 path_TE00 = r"D:\Window自帶文件夾\桌面\PIC Design\Lumerical\Tutorials\T02_Taper_2D_PropagateAlongX\taper_modes.mat" # 讀取.mat類型數(shù)據(jù) 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
這個(gè)提示的意思就是說,當(dāng)matlab的版本高于7.3時(shí),使用sc.io.loadmat()去導(dǎo)入matlab文件就變得不可行了。并且提示了我們應(yīng)該使用HDF reader包去解決這個(gè)問題。我相信有很多小伙伴去嘗試了,但是依然無法導(dǎo)入,這里做一下說明。首先,在windows命令行中使用如下命令安裝HDF reader包。具體教程可以查看------Python 使用pip在windows命令行中安裝HDF reader包(超鏈接點(diǎn)擊跳轉(zhuǎn))。
之后使用如下命令代碼即可:
# 導(dǎo)入HDF reader包
import h5py
# 設(shè)定需要導(dǎo)入的matlab數(shù)據(jù)目錄
path_TE00 = r"D:\Window自帶文件夾\桌面\PIC Design\Lumerical\Tutorials\T02_Taper_2D_PropagateAlongX\taper_modes.mat"
# 讀取.mat類型數(shù)據(jù)
modes = h5py.File(path_TE00, "r")
# 獲取導(dǎo)入的matlab數(shù)據(jù)
data_modes = modes.get('modes')
# 將導(dǎo)入的數(shù)據(jù)轉(zhuǎn)換為ndarray格式
data_modes_final = np.array(data_modes)
# 打印導(dǎo)入后的數(shù)據(jù)
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')語(yǔ)句中的參數(shù)'modes'表示的是在matlab工作區(qū)中用于保存數(shù)據(jù)的變量名稱,這個(gè)一定要注意,如果變量名稱給錯(cuò)了,那仍然無法讀取到數(shù)據(jù),會(huì)得到一個(gè)None的返回值。對(duì)應(yīng)modes的變量如下圖所示:

注意:參數(shù)是變量名,變量名,變量名,重要的事情說三遍。
上面是導(dǎo)入一般類型的數(shù)據(jù),通常數(shù)據(jù)導(dǎo)入后在python中以一個(gè)二維數(shù)組顯示。但是對(duì)于復(fù)數(shù)類型的數(shù)據(jù),導(dǎo)入python后還需要進(jìn)行一個(gè)復(fù)數(shù)類型轉(zhuǎn)換,讀者可以自行研究,如果有遇到相同問題解決不了的,可以在評(píng)論區(qū)留言給我,后續(xù)我會(huì)添加復(fù)數(shù)數(shù)據(jù)的導(dǎo)入操作方法。
到此這篇關(guān)于如何將matlab數(shù)據(jù)導(dǎo)入到Python中使用的文章就介紹到這了,更多相關(guān)matlab數(shù)據(jù)導(dǎo)入到Python中使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pyspark創(chuàng)建DataFrame的幾種方法
為了便于操作,使用pyspark時(shí)我們通常將數(shù)據(jù)轉(zhuǎn)為DataFrame的形式來完成清洗和分析動(dòng)作。那么你知道pyspark創(chuàng)建DataFrame有幾種方法嗎,下面就一起來了解一下2021-05-05
Python學(xué)習(xí)之不同數(shù)據(jù)類型間的轉(zhuǎn)換總結(jié)
類型轉(zhuǎn)換,就是將自身的數(shù)據(jù)類型變成新的數(shù)據(jù)類型,并擁有新的數(shù)據(jù)類型的所有功能的過程。本文將詳細(xì)為大家介紹如何在Python中實(shí)現(xiàn)不同數(shù)據(jù)類型的轉(zhuǎn)換,感興趣的可以了解一下2022-03-03
django+js+ajax實(shí)現(xiàn)刷新頁(yè)面的方法
這篇文章主要介紹了django+js+ajax實(shí)現(xiàn)刷新頁(yè)面的方法,結(jié)合實(shí)例形式分析了django實(shí)現(xiàn)ajax刷新頁(yè)面功能的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-05-05
使用Python的pygame庫(kù)實(shí)現(xiàn)下雪效果的示例代碼
這篇文章給大家介紹了如何使用Python的pygame庫(kù)實(shí)現(xiàn)下雪的效果,文中通過代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的的幫助,需要的朋友可以參考下2024-01-01
在python的類中動(dòng)態(tài)添加屬性與生成對(duì)象
這篇文章給大家介紹了如何在python的類中動(dòng)態(tài)添加屬性和生成對(duì)象,文中通過幾個(gè)方面來進(jìn)行介紹,對(duì)這感興趣的朋友們可以學(xué)習(xí)學(xué)習(xí)。2016-09-09
Python實(shí)現(xiàn)的擬合二元一次函數(shù)功能示例【基于scipy模塊】
這篇文章主要介紹了Python實(shí)現(xiàn)的擬合二元一次函數(shù)功能,結(jié)合實(shí)例形式分析了Python基于scipy模塊進(jìn)行二元一次函數(shù)擬合相關(guān)科學(xué)運(yùn)算操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-05-05
python實(shí)現(xiàn)簡(jiǎn)單坦克大戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單坦克大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
Python簡(jiǎn)單獲取二維數(shù)組行列數(shù)的方法示例
這篇文章主要介紹了Python簡(jiǎn)單獲取二維數(shù)組行列數(shù)的方法,結(jié)合實(shí)例形式分析了Python基于numpy模塊的二維數(shù)組相關(guān)運(yùn)算技巧,需要的朋友可以參考下2018-12-12

