日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

解決python調用matlab時的一些常見問題

瀏覽:26日期:2022-06-24 10:34:25
為什么要用python調用matlab?

我自己的有些數據結構涉及到hash查找,在python中key是tuple形式,在matlab中支持hash查找的數據結構只有containers.Map(),并不能支持cell作為key。

嘗試過把向量轉為string,但是num2str和str2mat的效率不高,containers.Map()的查找耗時也非常的長,所以只好作罷。

后來發現可以用python通過matlab的API直接調用matlab的函數參與運算,朋友的經驗說矩陣運算都交給matlab來計算就很快了。

但是摸索過程中發現一些問題,在網絡上基本找不到,自己全靠摸索發現解決方式,寫在這里,如果能給大家帶來幫助,那就很好了。

配置python以調用matlab的APIpython環境

這里以py2.7和Spyder的anaconda為例。

通過mlab庫

這個包直接搜索到官網上下載即可。也可以嘗試pip,我已經忘了當時怎么裝上的了。

裝好之后,使用示例如下:

from mlab.releases import latest_release as matlabimport ospath = os.getcwd()mat.path(mat.path(),path) # 添加當前腳本所在路徑到matlab的環境中......

所有的matlab(包括自定義函數)的可以通過matlab.xxxx()的方式調用。

mlab包的優點

matlab中的所有變量都是矩陣形式的,到python中會自動轉為numpy的array形式,非常方便。

mlab包的缺點

這是最大的BUG!那就是自定義函數在通過mlab在python中調用之后,就好像編譯只讀了一樣,此后對.m文件的任何修改都不起作用,不管是重新啟動python的kernel、重新啟動spyder、重新import mlab、刪除.m文件重建同名函數.m文件,都行不通。刪除了.m文件,python報錯,除非重新命名一個新函數后調用,那么這個新函數同樣面臨無法修改的問題。

除非重啟電腦。

因此我選擇了另一個方式,也是matlab官網介紹的方式。

通過matlab.engine

matlab官網的鏈接:MATLAB API for Python。

安裝過程:

1、在matlab安裝路徑中,找到”R2016bexternenginespython”,每個人安裝路徑不一樣,找到末尾一致路徑即可

2、這里注意區分,通過anaconda prompt打開其命令行,依次執行:d: ?>cd D:Program FilesMATLABR2016bexternenginespython,即切換路徑到matlab的python的setup.py下

3、官方還給出了較全的安裝方案,跟著做就好:在非默認位置安裝用于 Python 的 MATLAB 引擎 API

4、安裝完成后,python中就可測試以下內容了:

#coding=utf-8import matlab.enginefrom numpy import *if __name__ == ’__main__’: eng = matlab.engine.start_matlab() A = matlab.double([[1,2],[5,6]]) print(type(A),A.size,A) print(eng.eig(A)) eng.quit() pass

matlab.engine包的優點

這是matlab官方介紹的方法,不會出現mlab的那種問題,可以邊寫程序邊調試沒問題了。

matlab.engine包的缺點

使用的變量中有許多的matlab類,其中一些在spyder的Variable explorer中無法顯示,必須人為打印。

另外就是必須注意python變量類型和matlab變量類型的對應關系,matlab給出了一張表:Pass Data to MATLAB from Python。

我習慣上會把變量以list的方式 [1,2,3] 傳入到matlab的函數中,這樣matlab里面實際認為是cell,調試中遇到了很多次,實際上如果只傳數值到函數中,需要在python中將變量設置為 matlab.double([1,2,3]) 傳入才正常。

實用建議

matlab.double類型的變量,可以通過numpy.asarray方式轉為array類型的變量,方便在python中處理。

matlab中的函數返回到python中的值默認為1個,需要在函數中增加一個參數nargout=n,如果n與返回的個數不一致,python會報錯。

總結

官方介紹的matlab.engine更好用。

matlab負責處理矩陣計算,python用以解決hash查找的數據結構。

目前還在開發初期階段,并不知道數據在python和matlab之間的通信效率高不高。

第一次寫總結,主要是為了給自己總結用,避免以后發生同樣的錯誤。考慮到網絡上相關問題的中文介紹非常少,能找到的都是抄過來抄過去的基礎配置問題,我這里分享出來,以期能夠幫助到其他朋友。

補充:python調用matlab問題解決小建議

軟件及python位數要一致

cmd進行build和install時需要管理員權限運行

多個版本的情況下,需要使用python、python2、python3進行python2 setpy.py build這樣

函數的參數一般需要matlab.double轉換或者參數賦值時直接改為double型

import matlab.engineeng = matlab.engine.start_matlab()

需要保證你的函數或腳本就在當前的工作路徑下,也就是說要把m文件放到python程序中去

matlab.double([44100])matlab.double([[1.0,1.4142135623730951,1.7320508075688772,2.0,2.23606797749979]])signal = eng.hanshu(matlab.double([44100]), matlab.double([3000]), matlab.double([5]))

默認情況下,API認為接收函數返回結果的參數有1個。

這會導致沒有返回值的函數在被調用時報錯:“Too many output arguments”或是多個返回值的情況下只返回并得到第一個返回值

我們可以人為指定輸出參數為0個來避免這樣的錯誤。

eng.hanshu(canshu, nargout=2)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
九九九精品视频| 99热精品久久| 在线看片国产福利你懂的| 欧美激情麻豆| 国产美女视频一区二区| 91九色综合| 青青草国产精品亚洲专区无| 亚洲欧美日韩综合国产aⅴ| 奇米狠狠一区二区三区| 国产亚洲永久域名| 国产另类在线| 91成人精品在线| 91成人在线网站| 国产精品一区二区av日韩在线| 国产欧美日韩免费观看| 欧美精品不卡| 激情91久久| 亚洲精品在线二区| 日韩高清国产一区在线| 日韩一级精品| 麻豆9191精品国产| 日韩一区免费| 日韩高清成人| 日韩欧美另类中文字幕| 亚洲精品欧美| 97精品久久| 久久精品色播| 激情亚洲影院在线观看| 国产精品av久久久久久麻豆网| 91福利精品在线观看| 国产亚洲一区二区三区啪| 99免费精品| 亚洲少妇在线| 一本综合精品| 国产在线看片免费视频在线观看| 日韩久久一区二区三区| 中文在线一区| 日本va欧美va欧美va精品| 国产精品qvod| 欧美好骚综合网| 欧洲激情综合| 另类综合日韩欧美亚洲| 人人草在线视频| 日韩国产一区二| 国产调教精品| 最近高清中文在线字幕在线观看1| 欧美精品羞羞答答| 综合激情视频| 麻豆国产欧美日韩综合精品二区| 久久免费影院| 欧美成人亚洲| 日本少妇精品亚洲第一区| 国产一区二区亚洲| 欧美在线91| 黄毛片在线观看| 快she精品国产999| 欧美国产日韩电影| 亚洲性视频h| 久久激五月天综合精品| 日韩欧美视频专区| 亚洲三级视频| 国产精品久久久久蜜臀| 国产毛片一区| 国产精品啊v在线| 欧美13videosex性极品| 日韩在线播放一区二区| 久久久久久久久99精品大| 蜜臀av亚洲一区中文字幕| 精品中文字幕一区二区三区 | 999国产精品| 亚洲日本在线观看视频| 福利欧美精品在线| 婷婷亚洲精品| 久久中文视频| 国产欧美日韩一区二区三区四区| 偷拍欧美精品| 国产伦一区二区三区| 精品在线播放| 久久亚洲国产精品尤物| 免费不卡在线观看| 亚洲1234区| 国产精品一卡| 麻豆亚洲精品| 播放一区二区| 国产精品红桃| 免播放器亚洲| 狠狠躁少妇一区二区三区| 久久精品99久久久| 视频一区在线视频| 久久久久久久久99精品大| 美女免费视频一区| 美女国产一区| 久久精品观看| 精品五月天堂| 日韩av不卡在线观看| 亚洲欧美日韩精品一区二区 | 麻豆精品视频在线| 亚洲久久一区| 欧美精品激情| 日韩伦理一区| 美女性感视频久久| 91精品在线免费视频| 99re国产精品| 99视频精品全部免费在线视频| 久久福利在线| 免费视频一区二区| 欧美日韩国产亚洲一区| 成人精品亚洲| 91视频一区| 久久久精品国产**网站| 欧美天堂一区二区| 亚洲精品自拍| 日韩精品一级中文字幕精品视频免费观看 | 久久国产精品久久久久久电车| 中文在线中文资源| 精品一区二区三区中文字幕在线| 日韩精品免费视频一区二区三区| 亚洲少妇一区| 9久re热视频在线精品| 999国产精品视频| 免费高潮视频95在线观看网站| 国产一区二区三区四区| 免费精品一区| 卡一卡二国产精品| 欧美激情日韩| 老色鬼精品视频在线观看播放| 国产精品777777在线播放 | 国产精品亚洲片在线播放| 日本一区二区三区中文字幕| 蜜桃av一区二区| 亚洲欧美专区| 日韩在线黄色| 欧美一区自拍| 国产精品第一| 久久久久黄色| 欧美激情视频一区二区三区免费| 国产精品成人一区二区网站软件| 国产精品一区二区精品视频观看| 国产精品久久久亚洲一区| 国产精品1luya在线播放| 国产精品一区毛片| 国产极品模特精品一二| 国产精品v一区二区三区| 欧美激情视频一区二区三区免费 | 日韩精品a在线观看91| 亚洲综合中文| 日韩av中文在线观看| 国产日韩亚洲欧美精品| 麻豆精品在线观看| 国产精品99视频| 久久久国产精品一区二区中文| 色一区二区三区四区| 日韩大片在线播放| 欧美成人基地 | 日本成人在线一区| 欧美中文一区| 麻豆视频一区二区| 精品日韩一区| 色88888久久久久久影院| 99久久精品网站| 黄色精品网站| 日韩精品久久久久久| 免费看一区二区三区| 欧美日韩国产观看视频| 国产一区亚洲| 日本大胆欧美人术艺术动态| 日韩亚洲精品在线观看| 精品一区二区三区视频在线播放 | 在线视频亚洲欧美中文| 日本一区二区中文字幕| 国产精品日韩精品在线播放| 精品入口麻豆88视频| 99久久亚洲精品蜜臀| 蜜臀av亚洲一区中文字幕| 国产精品极品在线观看| 色爱av综合网| 天堂久久av| 91视频久久| 亚洲日本免费电影| 精品一二三区| 午夜国产精品视频| 欧美日韩 国产精品| 欧美freesex黑人又粗又大| 最新日韩av| 久久99精品久久久野外观看| 欧美a级一区| 欧美精品国产一区| 欧美一区二区性| 欧美亚洲三级| 欧美 日韩 国产一区二区在线视频 | 欧美一级鲁丝片| 蜜桃久久精品一区二区| 免费一级欧美在线观看视频 | 四虎影视精品| 欧美视频二区| 欧美亚洲激情| 国产精品久久乐| 亚洲成人日韩| 久久av网站| 免费的成人av|