matlab調(diào)用python的各種方法舉例子詳解
前言
在MATLAB中,可以使用 py
函數(shù)來調(diào)用Python模塊和函數(shù)。在此基礎上,我們可以很輕易的調(diào)用python中的各種模塊,方便我們在神經(jīng)網(wǎng)絡上的應用仿真。
以下是使用MATLAB調(diào)用Python模塊的基本步驟:
確保你的系統(tǒng)已經(jīng)正確安裝了Python,并且將Python添加到了系統(tǒng)的環(huán)境變量中。
在MATLAB命令窗口中,使用 pyversion
命令檢查MATLAB當前使用的Python版本。確保它是你希望調(diào)用的Python版本。
使用 py.module_name
語法來引入Python模塊。 module_name
是你要調(diào)用的Python模塊的名稱。
調(diào)用Python模塊中的函數(shù)或方法。使用 .
操作符來訪問模塊中的函數(shù)和方法。
1 調(diào)用自定義python函數(shù)
% 添加函數(shù)模塊路徑, 如果路徑不在則搜索不到 py.sys.path().append('fun/to/path') mymod = py.importlib.import_module('py_name') % 不要帶py后綴,不然報錯 a = mymod.print_num(1) disp(a)
例子
# num.py def print_num(num): return num
% 添加函數(shù)模塊路徑, 如果路徑不在則搜索不到 py.sys.path().append('fun/to/path') mymod = py.importlib.import_module('num') % 不要帶py后綴,不然報錯 a = mymod.print_num(1) disp(pwd) disp(a)
2 訪問 Python 內(nèi)置模塊
要訪問 Python 庫,請在 Python 名稱前添加 py.
前綴。訪問math模塊:
% 引入Python模塊 % py.math; % 調(diào)用Python模塊中的函數(shù) result = py.math.sqrt(4); disp(result); % 顯示結(jié)果
調(diào)用list、textwrap:
a = py.list({'This','is a','list'}); disp(a); b = py.textwrap.wrap('This is a string'); disp(b);
3 從 MATLAB 運行python腳本
3.1 PYRUNFILE(FILE)
PYRUNFILE(FILE) 執(zhí)行 Python 腳本文件 FILE,它可以被提供為標量字符串、cellstr 或 char 數(shù)組。 FILE 必須指定絕對路徑或相對路徑-相對于當前工作目錄,擴展名為“.py”的文件的路徑。如果腳本文件需要任何命令行參數(shù),則可以通過提供它們在要執(zhí)行的文件路徑之后的 FILE 中,由空格字符分隔。
格式
% 返回值的 pyrunfile("fun.py")
例子
# 定義num.py的函數(shù) def print_num(num=1): print("執(zhí)行print_num函數(shù)") return num if __name__ == "__main__": b = print_num(3) print("hello world!")
matlab中調(diào)用,命令行窗口可以得到print打印出的值:
% a string, cellstr or a char array % 添加當前python的文件路徑 py.sys.path().append('fun/to/path') % 調(diào)用這個函數(shù) pyrunfile("num.py")
3.2 [ OUTVARS ] = PYRUNFILE(FILE, OUTPUTS)
[ OUTVARS ] = PYRUNFILE(FILE, OUTPUTS) 執(zhí)行文件并返回任何變量由 Python 生成到 MATLAB,通過指定 Python 變量的名稱在 OUTPUTS 中并在 OUTVARS 中捕獲返回值。 可以提供輸出作為字符串、cellstr 或 char 數(shù)組。
格式
% 返回值的 out_vulue = pyrunfile("fun.py", "var_nam")
例子
# num.py def print_num(num=1): return num if __name__ == "__main__": b = print_num(3)
matlab中調(diào)用,這里不需要導入這個函數(shù),程序會自動搜索這個函數(shù):
% a string, cellstr or a char array % 添加當前python的文件路徑 py.sys.path().append('fun/to/path') % 調(diào)用這個函數(shù) myListFile = pyrunfile("num.py", "b")
denominator分母,imag虛部,real實部,numerator分子
獲取更多的返回變量
# 已經(jīng)定義的num.py def print_num(num=1): c = 1 print("執(zhí)行print_num函數(shù)") return num if __name__ == "__main__": a = print_num(2) b = print_num(3) print("hello world!")
上面代碼中,我們定義了a、b、c三個變量,這是我們都想獲取,則可以通過下面的方法:
[a, b, c] = pyrunfile("num.py", ["a", "b", "c"]);
可以發(fā)現(xiàn),a、b的值都成功獲取了,但是c沒有成功,應為c為在函數(shù)print_num中,為零時變量,獲取不到。
3.3 [ OUTVARS ] = PYRUNFILE(FILE, OUTPUTS, varargin{INPUTS})
[ OUTVARS ] = PYRUNFILE(FILE, OUTPUTS, varargin{INPUTS}) 執(zhí)行文件并返回OUTPUTS, 并將它們分配給 OUTVARS,使用 varargin{INPUTS} 傳遞的 MATLAB 數(shù)據(jù)。 varargin{INPUTS} 可用于將 MATLAB 數(shù)據(jù)傳遞給 Python 表達式,格式:名稱-值對,其中名稱是要分配的 Python 變量的名稱,并且該值是 MATLAB 數(shù)據(jù)或可訪問工作區(qū)中的變量名稱。 varargin{INPUTS}只能用于傳遞可自動轉(zhuǎn)換為python格式的數(shù)據(jù)。
格式一
% 返回值的 out_vulue = pyrunfile("fun.py argv1 argv2 ...argvn", "var_nam")
例子
# num.py import sys def print_num(num=1): ans = num+1 return ans if __name__ == "__main__": arg = sys.argv[1] print(type(arg)) b = print_num(int(arg)) print(b)
調(diào)用
b = pyrunfile("num.py 1", "b");
格式二
% 返回值的 out_vulue = pyrunfile("fun.py", "var_nam", arg1=v1, arg2=v2)
例子
# num.py def print_num(num=1): ans = num+1 return ans if __name__ == "__main__": num1= x num2 = y a = print_num(num1) b = print_num(num2) print(a) print(b)
調(diào)用:
[a, b] = pyrunfile("num.py", ["a", "b"], x=1, y=2);
總結(jié)
到此這篇關于matlab調(diào)用python的各種方法的文章就介紹到這了,更多相關matlab調(diào)用python方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決python訓練模型報錯:BrokenPipeError:?[Errno?32]?Broken?pipe
這篇文章主要介紹了解決python訓練模型報錯:BrokenPipeError:?[Errno?32]?Broken?pipe問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07詳解python定時簡單爬取網(wǎng)頁新聞存入數(shù)據(jù)庫并發(fā)送郵件
這篇文章主要介紹了python定時簡單爬取網(wǎng)頁新聞存入數(shù)據(jù)庫并發(fā)送郵件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11selenium WebDriverWait類等待機制的實現(xiàn)
這篇文章主要介紹了selenium WebDriverWait類等待機制的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03python實現(xiàn)人性化顯示金額數(shù)字實例詳解
在本篇內(nèi)容里小編給大家整理了關于python實現(xiàn)人性化顯示金額數(shù)字實例內(nèi)容,需要的朋友們可以參考下。2020-09-09