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

您的位置:首頁技術(shù)文章
文章詳情頁

解決python調(diào)用matlab時(shí)的一些常見問題

瀏覽:29日期:2022-06-24 10:34:25
為什么要用python調(diào)用matlab?

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

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

后來發(fā)現(xiàn)可以用python通過matlab的API直接調(diào)用matlab的函數(shù)參與運(yùn)算,朋友的經(jīng)驗(yàn)說矩陣運(yùn)算都交給matlab來計(jì)算就很快了。

但是摸索過程中發(fā)現(xiàn)一些問題,在網(wǎng)絡(luò)上基本找不到,自己全靠摸索發(fā)現(xiàn)解決方式,寫在這里,如果能給大家?guī)韼椭蔷秃芎昧恕?/p>配置python以調(diào)用matlab的APIpython環(huán)境

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

通過mlab庫

這個(gè)包直接搜索到官網(wǎng)上下載即可。也可以嘗試pip,我已經(jīng)忘了當(dāng)時(shí)怎么裝上的了。

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

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

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

mlab包的優(yōu)點(diǎn)

matlab中的所有變量都是矩陣形式的,到python中會(huì)自動(dòng)轉(zhuǎn)為numpy的array形式,非常方便。

mlab包的缺點(diǎn)

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

除非重啟電腦。

因此我選擇了另一個(gè)方式,也是matlab官網(wǎng)介紹的方式。

通過matlab.engine

matlab官網(wǎng)的鏈接:MATLAB API for Python。

安裝過程:

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

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

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

4、安裝完成后,python中就可測(cè)試以下內(nèi)容了:

#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包的優(yōu)點(diǎn)

這是matlab官方介紹的方法,不會(huì)出現(xiàn)mlab的那種問題,可以邊寫程序邊調(diào)試沒問題了。

matlab.engine包的缺點(diǎn)

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

另外就是必須注意python變量類型和matlab變量類型的對(duì)應(yīng)關(guān)系,matlab給出了一張表:Pass Data to MATLAB from Python。

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

實(shí)用建議

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

matlab中的函數(shù)返回到python中的值默認(rèn)為1個(gè),需要在函數(shù)中增加一個(gè)參數(shù)nargout=n,如果n與返回的個(gè)數(shù)不一致,python會(huì)報(bào)錯(cuò)。

總結(jié)

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

matlab負(fù)責(zé)處理矩陣計(jì)算,python用以解決hash查找的數(shù)據(jù)結(jié)構(gòu)。

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

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

補(bǔ)充:python調(diào)用matlab問題解決小建議

軟件及python位數(shù)要一致

cmd進(jìn)行build和install時(shí)需要管理員權(quán)限運(yùn)行

多個(gè)版本的情況下,需要使用python、python2、python3進(jìn)行python2 setpy.py build這樣

函數(shù)的參數(shù)一般需要matlab.double轉(zhuǎn)換或者參數(shù)賦值時(shí)直接改為double型

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

需要保證你的函數(shù)或腳本就在當(dāng)前的工作路徑下,也就是說要把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]))

默認(rèn)情況下,API認(rèn)為接收函數(shù)返回結(jié)果的參數(shù)有1個(gè)。

這會(huì)導(dǎo)致沒有返回值的函數(shù)在被調(diào)用時(shí)報(bào)錯(cuò):“Too many output arguments”或是多個(gè)返回值的情況下只返回并得到第一個(gè)返回值

我們可以人為指定輸出參數(shù)為0個(gè)來避免這樣的錯(cuò)誤。

eng.hanshu(canshu, nargout=2)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产欧美69| 加勒比视频一区| 欧美aa在线视频| 国产精品99免费看| 日韩成人精品一区二区三区| 亚洲黄色中文字幕| 伊人精品久久| 综合日韩av| 日韩欧美在线精品| 久久亚洲成人| 日本va欧美va精品| 激情五月综合| 久久三级毛片| 日韩欧乱色一区二区三区在线| 日韩免费看片| 国产精品久久亚洲不卡| 亚洲专区在线| 精精国产xxxx视频在线播放| 久久狠狠久久| 亚洲一卡久久| 日韩一区二区三区免费播放| 日本va欧美va精品发布| 亚洲精品成人| 中文字幕在线视频网站| 国产精品一区二区精品视频观看 | 欧美自拍一区| 亚洲激情欧美| 久久久久久一区二区| 久久成人国产| 欧美亚洲国产精品久久| 久久精品免费看| 日韩高清不卡一区二区| 午夜欧美理论片| 91看片一区| 福利精品在线| 麻豆精品一区二区综合av| 日韩一区二区三区高清在线观看| 激情欧美丁香| 亚洲伦乱视频| 国产suv精品一区二区四区视频| 国产调教精品| 日本一区免费网站| 日韩中文字幕91| 伊人久久大香线蕉av不卡| 日本一区二区免费高清| 国产亚洲一区二区三区不卡| 日韩精品一区第一页| 欧美二区视频| 久久精品一区二区不卡| 91视频一区| 久久伊人久久| 麻豆免费精品视频| 国产精品一在线观看| 日韩激情av在线| 亚洲专区视频| 亚洲精品乱码| 亚洲欧洲日韩精品在线| 综合色一区二区| 丝袜美腿一区二区三区| 亚洲一区免费| 视频一区国产视频| 亚洲三级国产| 91欧美日韩在线| 日本三级亚洲精品| 久久精品99国产国产精| 欧美亚洲福利| 国产精品白丝一区二区三区| 国产精品巨作av| 麻豆久久久久久| 欧美成a人片免费观看久久五月天| 久久国产生活片100| 国产三级精品三级在线观看国产| 青草av.久久免费一区| 日韩1区2区日韩1区2区| 国产欧美三级| 精品一区二区男人吃奶 | 久久uomeier| 日韩福利一区| 欧美 日韩 国产精品免费观看| 亚洲国产一区二区在线观看| 国产婷婷精品| 一区二区精品| 91欧美极品| 精品国产一区二区三区噜噜噜| 精品网站999| 日韩伦理在线一区| 色老板在线视频一区二区| 不卡在线一区二区| 伊人影院久久| 亚洲人成毛片在线播放女女| 日本在线不卡视频一二三区| 久久xxx视频| 97精品国产| 欧美亚洲国产激情| 日韩精品一二三| 国产日产精品一区二区三区四区的观看方式 | 牛牛精品成人免费视频| 国产v日韩v欧美v| 久久网站免费观看| 老牛影视一区二区三区| 日韩精品一区二区三区中文在线 | 亚洲免费观看高清完整版在线观| 日韩国产欧美在线视频| 精品视频自拍| 精品一区在线| 日韩一区二区三免费高清在线观看| 国产精品一区二区三区四区在线观看 | 欧美在线亚洲| 最新亚洲国产| 国产精品免费不| 亚洲女同av| 国产一区二区精品| 日韩国产成人精品| 日韩成人精品一区二区| 红桃视频国产精品| 日本a级不卡| 欧美日韩免费观看视频| 男人操女人的视频在线观看欧美| 国产精品视频3p| 久久亚洲国产| 欧美一级久久| 香蕉久久精品| 日本不卡一二三区黄网| 91欧美日韩| 免费精品视频最新在线| 久久精品一区二区三区中文字幕| 欧美成人精品| 国产精品主播| 香蕉国产精品| 国产欧美日韩在线一区二区 | 美美哒免费高清在线观看视频一区二区 | 亚洲天堂1区| 婷婷精品在线| 美女福利一区二区三区| 香蕉久久久久久| 日韩在线高清| 日韩精品一区二区三区免费视频 | 男女男精品视频网| 91欧美国产| 青青草91视频| 一区免费视频| 91欧美在线| 深夜福利亚洲| 日韩精品久久久久久久电影99爱| 午夜亚洲福利| 久久久久免费av| 久久av网站| 人人精品人人爱| 欧美亚洲国产激情| 久久精品免费看| 午夜精品影视国产一区在线麻豆| 日韩成人高清| 国产激情欧美| 午夜在线精品偷拍| 色一区二区三区| 国产精品一二| 免费黄网站欧美| 日韩欧美精品| 国产精品视频一区二区三区四蜜臂| 亚洲欧美视频| 91精品婷婷色在线观看| 国产精品一区2区3区| 免费在线观看成人| 成人久久一区| 精品福利久久久| 国产亚洲人成a在线v网站| 日韩午夜一区| 人人香蕉久久| 精品一区二区男人吃奶 | 国产成人免费精品| **爰片久久毛片| 亚洲乱码视频| 快she精品国产999| 婷婷激情图片久久| 日韩毛片视频| 色综合五月天| 麻豆精品视频在线观看| 欧美色综合网| 日韩欧美中文字幕电影| 鲁大师影院一区二区三区| 久久婷婷丁香| 97精品国产| 国产91欧美| 欧美极品中文字幕| 日韩国产欧美在线视频| 亚洲日产av中文字幕| 99日韩精品| 欧美粗暴jizz性欧美20| 亚洲成av人片一区二区密柚| 福利片在线一区二区| 精品一区二区三区中文字幕视频 | 国产在线成人| 久久免费黄色| 午夜av成人| 亚洲成人一区在线观看| 亚洲成人不卡| 电影天堂国产精品| 亚洲黄色中文字幕| 极品av在线| av综合电影网站|