日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Matlab下调用Python接口

發(fā)布時間:2023/12/31 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Matlab下调用Python接口 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MATLAB 到 C 語言程序的轉(zhuǎn)換可以由兩種途徑完成,其一是 MATLAB 自己提供的 C 語言翻譯程序 mcc, 另一種是原第 3 方公司 MathTools 開發(fā)的 MATCOM。后者出現(xiàn)較早,功能遠(yuǎn)比 MATLAB 自己的翻譯程序強(qiáng)大,可以直接將Matlab腳本轉(zhuǎn)換為C/C++代碼,MathWorks感受到了威脅,找人家談判,花巨資收購了MathTools 公司,并已將其開發(fā)技術(shù)融于MATLAB 中。最后Matlab又推出了C/C++接口,這也是適應(yīng)市場需要。這不,不知道什么時候起,Matlab也開始支持Python調(diào)用了,并且Python也可以調(diào)用Matlab。這是大勢所趨啊,雖然目前的Matlab(本人用的Matlab2015b)對Python接口的支持還不是很完美,只支持一部分,但這也是Matlab擔(dān)心被Python取代,擔(dān)心被邊緣化而做出的改進(jìn),相信以后會有更多改進(jìn)。下面介紹一下Matlab調(diào)用Python接口的一些示例。

首先說一下本人的環(huán)境配置,WIN7 64位系統(tǒng),Matlab2015b, Anaconda4集成的Python3.6,親測不需要在Matlab下的Set Path下配置Python的路徑,Matlab會直接搜索Python安裝路徑,即使你添加了路徑,有些Python庫,如果Matlab不支持,自然無法調(diào)用。下面來看一些具體的示例:

1. Matlab對Python下OpenCV庫的調(diào)用



這是在默認(rèn)你已經(jīng)成功安裝了Python下OpenCV的情況下,Matlab調(diào)用的結(jié)果。

下面看一對應(yīng)的Python代碼:

import cv2 img=cv2.imread('Lee02.png') cv2.imshow('Img',img)
有人可能會想,可不可以在Matlab直接 import cv2或 import py.cv2。前者目前沒有,后者針對OpenCV的也沒有,但是有類似后者的語法:



S = py.textwrap.wrap('This is a string'); import py.textwrap.wrap S = wrap('This is a string'); clear import
Matlab在對字符串的處理方面不如Python,所以Matlab對這方面Python接口的支持就非常好,而對于自己家有的,就支持不那么好了,當(dāng)然是擔(dān)心被取代了。 上述代碼中的 clear import一定要有,當(dāng)你使用了 import語句的時候,否則它會覆蓋Matlab內(nèi)置的對應(yīng)函數(shù)或類。

2. 創(chuàng)建Python對象

創(chuàng)建Python對象的語法如下:

pyObj = py.modulename.ClassName(varargin)其中 varargin表示送入Python構(gòu)造器的__init__方法的列表參數(shù)。關(guān)于構(gòu)造函數(shù)的相關(guān)幫助文檔示例如下:

py.help('textwrap.TextWrapper.__init__')3. 調(diào)用自定義Python模塊

自定義Python模塊如下:

# mymod.py """Python module demonstrates passing MATLAB types to Python functions""" def search(words):"""Return list of words containing 'son'"""newlist = [w for w in words if 'son' in w]return newlistdef theend(words):"""Append 'The End' to list of words"""words.append('The End')return words從Matlab命令行窗口把該模塊加入到Python搜索路徑:

if count(py.sys.path,'') == 0insert(py.sys.path,int32(0),''); end調(diào)用mymod.py模塊有一個輸入?yún)?shù),現(xiàn)在在Matlab下創(chuàng)建一個輸入?yún)?shù):

N = py.list({'Jones','Johnson','James'})
在Matlab下調(diào)用這個函數(shù)的具體語法如下:

names = py.mymod.search(N)

完整運行結(jié)果如下:



還有更多功能,請參閱Matlab官方文檔。












參考:

1. MATLAB與C語言的接口

2. MATLAB中調(diào)用Python



總結(jié)

以上是生活随笔為你收集整理的Matlab下调用Python接口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。