我是要給matlab程式,利用python 的 tkinter 包做乙個介面化。
環境:python 3.5;matlab 2016b
遇到的問題:
1,matlab 報錯:引用了已清除的變數 address
程式段:
function y = test(address)
clcclear
...address1 = address
%read.xml
ecg = xmlread(address1);
...end
經過查詢問題所在:是因為 clear 的問題。
將clear刪掉,放在end前面即可。
2,剛開始想通過在matlab建立乙個.dll檔案,然後在python端呼叫這個.dll檔案,但是
【指令碼m檔案 & 函式m檔案】
在查詢方法的過程中,發現 matlab在編寫程式的時候,有兩個m檔案:指令碼m檔案和函式m檔案。
在使用的過程中,兩個程式的最大區別就是 指令碼檔案沒有傳參和返回值。
函式m檔案,可以傳入引數,返回值。【用python呼叫程式,必須用函式m檔案】
由於開始老師給的檔案是:指令碼m檔案,故需要將指令碼檔案轉換為函式m檔案,然後才能在python端傳「本地位址」,然後在放在.m程式中,返回結果在python段進行其他操作。
【指令碼檔案轉換成函式檔案】
查詢了很多資料,發現一種最簡單的方式就是
將指令碼m檔案的頭,加上
function [返回值]=函式名(引數);
原函式體內部
end;
a = input('please input number\n','s'); %獲取a
b = input('please input number\n','s'); %獲取b
sum = a+b;
disp(sum); %輸出
test1.m (函式檔案)
function y = sum(a,b)
y = a+b;
return ;
end;
直接在命令列 sum(2,3),結果y就返回了(在這裡y是返回值,可以具有多個返回值,如下)。
function [y1,y2] = sum_sub(a,b)
y1 = a + b ;
y2 = a - b;
return; %可以寫也可以不寫
end;
3,【python連線matlab】
在問題2中提到了,用.dll。由於不太會,所以又發現了新的方法。
用matlab中提供的python引擎就可以了。即python 中寫 import matlab.magine 然後就可直接呼叫matlab程式就可以。
首先,安裝引擎。在cmd 命令下,
cd "matlabroot\extern\engines\python" 【這個位址是matlab安裝路徑內的位址】
python setup.py install
執行上述命令,進行引擎安裝。
注意: (1)有的人可能會找不見這個檔案目錄,是因為matlab版本問題,因為python比較新,2014及以前版本不可以,2015是否存在這個檔案路徑,有待考察。
(2)matlab 2016b 支援 python 3.5,2017a 支援 python 3.6版本,因此如果是matlab 2016b 版本需要再裝乙個 python3.5的環境。
安裝完成後就可以進行,混合程式設計了(matlab必須是函式檔案,否則返回不了結果)。**如下,
import matlab
import matlab.engine
eng = matlab.engine.start_matlab()
result = eng.test1(2,3) #呼叫matlab中的test1.m
print(result)
4,(1)出現過錯誤:importerror: no module named matlab.engine
是因為沒有把 .py檔案和 .m檔案放在同一目錄下,把.py檔案放在.m檔案路徑下就可以了,或者直接放在安裝引擎的那個目錄下
(2)有的人的matlab.m檔案不止乙個。把所有的.m檔案均放在 .py檔案所在的目錄下就行了。
參考:
c呼叫python記錄
c呼叫python的例項。1.應用場景 c 中需要資料庫的支援,但是引入資料庫十分的複雜且麻煩,所以考慮用python讀取配置檔案,然後將資料返回到c。2.呼叫步驟 a,新增必要的巨集和python路徑 define ms no coredll include c python27 include ...
Python 函式呼叫效能記錄
之前用 js 寫專案的時候,專案組用的元件模式,一直感覺很不錯。最近用 python 做新專案,專案結構也延續了元件模式。一直沒有對函式呼叫的效能作了解,今天突發奇想測試了一下,寫了一些測試 首先定義了幾個 class class a object deftest self pass class b...
flask 呼叫 python爬蟲 記錄
過程 爬蟲問題 後來呼叫 模擬登陸,selenium 火狐瀏覽器,虛擬機器環境下,模擬登陸是 控制滑鼠點選網頁指定位置,進入到輸入框中,控制鍵盤輸入賬號密碼,出現問題是 彈出的瀏覽器視窗中,自動輸入站好密碼,英文本元可以正常輸入,中文字元無法輸入,嘗試 手動接管後還是 無法輸入中文,後來 有換 系統...