一、背景介紹
Matlab和Python是現今非常流行的編程語言,分別適用於數學計算和科學計算領域。而且都有大量的庫可以使用。但是在某些情況下,我們需要同時使用這兩種語言。例如,當需要對Matlab處理後的數據進行後續的機器學習分析時,可以藉助Python中機器學習庫的強大能力。
因此,將Matlab和Python組合使用是很有必要的。屆時,Matlab需要調用Python程序,而Python程序需要返回數據到Matlab中。在本文中,我們將介紹如何通過Matlab調用Python程序實現高效編程,以便更好地利用兩種語言的優勢。
二、Matlab調用Python方法
1、使用系統調用
一種最簡單的方式是使用系統調用將Python程序直接作為一個命令行操作來執行。這種方法雖然簡單,但不夠靈活,也無法直接獲得Python程序的返回值。下面是一段演示代碼:
cmd = 'python "C:/test.py"'; dos(cmd); %直接在Matlab中執行dos調用
此時,Python程序將作為一個外部命令,在Matlab中通過cmd字元串進行調用,其中「C:/test.py」表示Python程序所在的路徑。
2、使用MATLAB Python,Python插件
Matlab具有與Python互動的介面——MATLAB Python。MATLAB Python插件是Matlab中的一個工具箱,它可以與Python安裝在同一台計算機上,使Matlab和Python可以進行互動。前提是首先安裝Python的工具包——Python Engine,這個工具包可以讓Matlab與Python進行通信。
安裝完成Python Engine後,就可以在Matlab中調用Python程序。需要注意的是,在Python程序開始時,需要導出Matlab的API。
Matlab 程序:
%通過Matlab Python調用Python程序 python_path='C:\Python39\python.exe'; %設置 Python 所在路徑 if count(py.sys.path,'') == 0 insert(py.sys.path,int32(0),''); %添加默認系統路徑 end %使用 Python 版本 >= 3.6 時使用此更新 API 的新方法 pymodule = py.importlib.import_module('test'); py_temp = pymodule.A; %調用 Python 函數 A = double(py.array.array('d',py.numpy.nditer(py_temp))); % 將 Python "numpy.ndarray" 轉換為 double 數組
Python程序:
import numpy as np import matlab.engine def test(m,n): B = np.array([[i+j for i in range(m)] for j in range(n)],dtype=np.float64) #生成一個 m*n 的數組 return B if __name__ =="__main__": eng = matlab.engine.connect_matlab() #創建鏈接對象 eng.workspace['A'] = test(3,4) #將 test 函數返回值存入 "A" 變數
三、Python程序返回值到Matlab
在上面的例子中,Python程序執行的結果還存在Matlab的一個變數A中。可以看到,Python程序的執行結果已經在Matlab中得到了處理。Matlab中的數組完全可以在Python程序中使用。但是,需要注意的是數組的類型和大小需要跨語言保持一致。
除此之外,可以將Python程序的返回值存入一個文件中,供Matlab讀取。這種方法比較靈活,在Matlab和Python之間傳遞數據、文件時最常用。
Python程序將數據保存到文件中,Matlab程序再讀取該文件,以完成與Python之間的數據傳遞。以下是一個示例:
Python程序:
import numpy as np def test(m, n): B = np.array([[i+j for i in range(m)] for j in range(n)], dtype = np.float64) np.savetxt('output.txt', B, fmt = '%.4f') return if __name__ =="__main__": test(3, 4)
Matlab程序:
%讀取Python程序保存的文件 data = load ('output.txt'); A = data;
總結
本文介紹了通過Matlab調用Python程序的方法,可以通過系統調用、MATLAB Python和Python插件等方式將兩種語言結合起來使用,並且介紹了如何將Python程序的返回值傳遞到Matlab中。這種方法可以更加高效地使用兩種語言的優勢。在實際應用中,需要根據實際情況進行選擇,盡量使得Matlab和Python的優勢得到最大的發揮。
原創文章,作者:TYDP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/141047.html