无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

關于m代碼轉py代碼的總結:

2023-03-08 10:08 作者:melonseeds123  | 我要投稿

一、將全部m代碼轉py后,輸出曲線結果不對

原因分析:1、函數(shù)寫錯;2、兩種語言求解精度不一樣,產(chǎn)生的誤差累積;

解決方法:

1、最開始的笨方法:逐行代碼檢查;——太浪費時間

確實發(fā)現(xiàn)一些語法的問題:主要有:

? ? ? ?1.1 np.dot(a,b,c)=np.dot(a,b):矩陣連乘用@,兩個矩陣相乘用@或np.dot;

? ? ? ?1.2 在py中a=b表示a就是b,b就是a,a變化b也變化,應改為a=b.copy()

2、采樣py調用m代碼的方式:將部分函數(shù)寫成py,部分函數(shù)仍然是m;通過調用可以檢查部分py文件是否寫錯;(結果子函數(shù)沒寫錯,最終結果就是不對)

此處采用py調用octave的形式,實現(xiàn)py調用m代碼,主要在py里安裝oct2py模塊,該模塊具體使用請參考官方文檔:打開下面連接即可;

GitHub - blink1073/oct2py: Run MFiles from Python - GNU Octave to Python bridge

注意:此種調用方式需要安裝octave軟件(開源);

綜上:是不是可以斷定結果的差異是由兩種語言之間求解精度不一樣導致的呢?

笨人確實開始這么以為的,并且逐行調試py代碼以及matlab代碼并對比,發(fā)現(xiàn)兩者之間確實存在求解精度的問題。。。。。。。


后來,細想,上面對比對象錯了呀,應該對比的是py調octave的結果 和 octave本身的求解結果,通過對比發(fā)現(xiàn),該兩者精度一致,并不存在求解精度的問題;因此,還是本身程序寫的不對;

最后,將正確的m代碼,在octave下跑,octave和matlab求解結果一致(注意:存在精度差異,但不足以影響控制效果,可忽略);在正確代碼基礎上,逐行驗證錯誤的py代碼,一個循環(huán)不行就兩個循環(huán),終于發(fā)現(xiàn)錯誤了。。。。。是個小細節(jié)的問題。






關于m代碼轉py代碼的總結:的評論 (共 條)

分享到微博請遵守國家法律
平安县| 无极县| 明星| 东台市| 桐庐县| 砀山县| 侯马市| 奈曼旗| 金溪县| 宝清县| 大厂| 汶川县| 通城县| 临邑县| 新绛县| 那曲县| 安化县| 蒲江县| 颍上县| 西宁市| 清水河县| 德江县| 光山县| 汾阳市| 布拖县| 朝阳县| 瓮安县| 将乐县| 城固县| 普兰店市| 祁阳县| 板桥市| 宣城市| 重庆市| 霍州市| 迁安市| 深水埗区| 盐城市| 太湖县| 德保县| 加查县|