程式基於Matlab語言開發,資料密集計算部分用C語言編寫有什麼優缺點?

時間 2021-06-07 18:10:06

1樓:李龍翔

這種方法其實就是把Matlab作為「膠水」把程式各個部分連線在一起,同為互動式程式語言的Python也可以做到。

利用Matlab繪圖功能,實現資料視覺化;

利用Matlab作為互動式程式語言,除錯起來並不比C麻煩,不同環境下都可以實現互動程式設計,逐步執行除錯。因此大部分情況下都要比純C語言開發效率快;(個人見解,大家見仁見智)

Matlab中有profile功能,可以直接檢視程式執行效率瓶頸;

其實也可以反過來,模型基於C開發,呼叫Matlab介面。可是這樣第二和第三條優點就沒有了,因此現在大部分Matlab混合程式設計都是將C函式修改為mex函式,編譯後供Matlab呼叫。

缺點:我是做計算流體的,大部分計算都需要MPI(多程序)並行運算,而Matlab的並行比較坑爹,貌似混合程式設計也只能實現多執行緒,可以參考Matlab 向量化程式設計和parfor並行是否矛盾? - 知乎使用者的回答裡面 @Falccm 的答案。

目前沒找到實現現有的多程序演算法模型方法;

寫mex函式一定不能出錯,否則出現segment fault會很麻煩,當然寫純C時候也可能出現這樣情況,主要看程式設計師水平

其他缺點還沒遇到,容我想想再補充。

PS:目前GPU並行技術逐漸成熟,相信未來會有更多的基於異構計算模型框架開發出來,這時候Matlab和GPU結合將會使計算效率進一步提高。雖然這類混合模型目前還不是大規模計算中的主流方法,但長遠看來Python和Matlab還是很有發展前途的。

為什麼不少程式設計師認為Matlab的語言設計不優雅甚至比較醜?能否舉出一些例子來說明?

常恭 因為 matlab 沒有官方的 style guide 風格指南 再加上 matlab 的函式,歷史包袱沉重,新老函式設計風格非常不同,同乙個功能又可以用不用函式實現,所以一千個使用者有一千個 matlab。 李方 cs的還是不懂ee的世界。這個世界不只有物件導向和二叉樹,還有傅利葉變換,數值...

很簡單的matlab程式,這個值為什麼等於乙個極小值但是不為0?

雄氏老方 一點程式設計上的小建議,如果你的函式中物理量都很小 例如e 7以下 你可以調整公式裡面的物理量量綱。例如原來是kg L 調整成ug L 這樣可以避免浮點數四捨五入誤差 已登出 捨入誤差的問題。譬如 這樣乙個算式,我們都知道 時有 但是計算機在計算 的時候並不能以分數的方式儲存,只能以小數的...

高階語言源程式不如組合語言源程式的可移植性好嗎

四眼井 組合語言就不要談什麼可移植性,彙編可以給你極致的高效率,穩定性,安全性,但你非要在組合語言上扯什麼可移植性。你這個問題可以改成以下版本 1 航母速度不如電單車快麼?那航母還有什麼卵用?2 阿司匹林治不了腳氣麼?那阿司匹林還有什麼卵用?3 美元擦屁股手感不如衛生紙麼?那美元還有什麼卵用?還有3...