1. matlab這么強大,為什麼還有看不起用這個軟體的人
其實一些討厭Matlab的人只是討厭調包這事情而已,保守來看,七成的Matlab選手是沒辦法自己實現一個演算法的......但是就建模而言,你要是不用改演算法的話,為什麼要自己實現它呢?
想做硬核的程序員是好事情,不過數模這事本身就沒那麼硬核...你可以去做機器學習去刷Kaggle,那邊應該沒人會用Matlab——不過大家依然都還是調包俠就是了。
2. 為什麼很多程序員會鄙視MATLAB
其實有一個問題混淆了,matlab的集成程序非常的豐富,開發matlab軟體的才能稱作程序猿。用matlab的不一定能稱作是程序員,其實只要是用的好,也是非常牛的。
一般程序猿鄙視的是那種只會用matlab但不怎麼會寫matlab代碼的人(或者用matlab 只要簡單的調用幾個程序命令)。
但這種鄙視只是在寫編寫代碼水平上的鄙視。 所以這導致一個誤區。就是拿自己比較擅長的一方面跟別人不擅長的一方面對比。 如果一般程序猿跟開發matlab的去比,不一定比的上他們,而如果程序猿跟使用matlab的人比使用的思想,這些程序猿也不一定能行。
3. 為什麼不少程序員認為Matlab的語言設計不優雅甚至比較丑
C
雖說C語言在內存管理方面存在嚴重的缺陷,不過它還是在某些應用領域里稱王稱霸。對於那些要求最高的效率,良好的實時性,或者與操作系統內核緊密關聯的程序來說,C仍然是很好的選擇。
C良好的可移植性也為它加了分。不過現在很多其他的語言可移植性越來越好,C在這方面的優勢可能會逐漸喪失。
現有的很多程序可以產生非常棒的C代碼,比如語法分析器、GUI
Builder等,這時候C語言也是有吸引力的,因為你所需要編寫的代碼只是整個程序的一小部分。
再有,我們當然應該認識道,C語言對於程序員來說具有無可替代的價值。就我這里討論的每一種語言而論,只要你發掘的足夠深,到最後你會看到它們的內核都是用純正的、可移植的C寫成的。
到了今天這個時候,我們最好把C看成是UNIX虛擬機上的高級匯編語言。
就算是其他的高級語言完全可以滿足你的工作需要,抽出時間來學習C語言也仍然有益,它能幫助你在硬體體系的層次上思考問題。
即使到了今天,最好的C語言教程仍然是1988年出版的K&R第二版The
C Programming Language.
總結:C最出色的地方在於其高效和貼近機器,最糟糕的地方在它的內存管理地獄。
C++
C++最初發布於1980年代中期,當時面向對象語言被認為是解決軟體復雜性問題的銀彈。C++的面向對象特性看相去使其全面超越了C,支持者認為C++將迅速把上一代語言擠到陳列館里去。
但是歷史並非如此。究其原因,至少有一部分歸咎於C++本身。為了與C兼容,C++被迫作出了很多重大的設計妥協,結果導致語言過分華麗,過分復雜。為了與C兼容,C++並沒有採用自動內存管理的策略,從而喪失了修正C最嚴重問題的機會。
另外一部分原因,恐怕要算到面向對象身上。看起來OO並沒有很好的達成人們當年的預期。我就這個問題調研過,我發現使用OO方法導致組件之間出現很
厚的粘合層,並且帶來了嚴重的可維護性問題。今天讓我們來看看開放源碼社區,你會發現C++的應用還是集中在GUI,游戲和多媒體工具包這些方面,在其他
地方很少用到。要知道,面向對象也只是在這些領域被證明非常成功,而開放源碼社區的選擇,很大程度上體現了程序員的自由意志,而不是公司管理層的胡亂指揮。
也許C++實現OO的方法有問題。有證據表明C++程序在整個生命周期的開銷高於相應的C,
Fortran和Ada程序。不過,究竟這是否應該歸咎與C++的OO實現上,還不清楚。
最近幾年,C++加入了很多非OO的思想,其異常思想類似Lisp,STL的出現是非常了不起的。
其實C++最根本的問題在於,它基本上只不過是另一種傳統的語言。STL中的內存管理比先前的new/delete和C的方案要好的多,但是還是沒有解決問題。對於很多應用程序而言,其OO特性並不明顯,相比與C,除了增加復雜度之外沒有獲得很多好處。
總結:C++優點在於作為編譯型語言,把效率與泛型和面向對象特性結合起來,其缺點在於過於華麗復雜,傾向於鼓勵程過分復雜的設計。
Visual
Basic(簡稱VB)
VB是快速的界面生成語言,是快速的資料庫程序開發語言。vba是vb的應用版,嵌入在MS
office中。編寫MS office上的程序很好用。缺點是只能在Windows平台運作。
Java
Java的設計很聰明,它採用了自動內存管理,這是最大的改進,支持OO設計帶來的好處雖然不那麼突出,不過也很值得贊賞,相比C++,其OO設計規模小而且簡單
。
相對於Python而言,Java有一些明顯的失誤。有些地方設計的還是太復雜,甚至有缺陷。Java的類可見性和隱式scoping規則太復雜
了。Interface機制是為了避免多繼承帶來的問題而設計的,但是要理解和使用它還是挺難。內部類和匿名類導致令人困惑的代碼。缺乏有效的析構機制,使得除了內存之外的其他資源(比如互斥量和鎖)管理起來很困難。Java的線程不可靠,其I/O機制很強大,但是讀取一個文本文件卻非常繁瑣。
Java沒有管理庫版本的機制,從而形式上重蹈了了Windows
DLL地獄的覆轍。在類似應用伺服器這樣的環境里,這引起了大量的問題。
總體而言,我們可以說除了系統編程和對效率要求極高的程序之外,Java在大部分領域優於C++。經驗表明,Java程序員似乎不太容易象C++程序員那樣構造過度的OO層,不過在Java中這仍然是個嚴重問題。
Java是否優於諸如Perl,
Python這樣的語言?我們還不是很清楚,很大程度上似乎跟程序規模有關。其擅長的領域基本上於Python相似,在效率上無法跟C/C++相提並論,
在小規模的、大量使用模式匹配和編輯的項目里也無法匹敵Perl。在小項目里,Java顯得過分強大了。我們猜測Python更適合小項目,而Java適
合大項目,不過這一點並沒有得到有力的證明。
Python
Python是一種腳本語言,可以與C緊密整合。它可以與動態載入的C庫模塊交換數據,也可以作為內嵌腳本語言而從C中調用。其語法類似C和模塊化語言的雜合,不過有一個獨一無二的特徵,就是以縮進來確定語句塊。
Python語言非常干凈,設計優雅,具有出色的模塊化特性。它提供了面向對象能力,但不強迫用戶進行面向對象設計。其類型系統提供了強大的表達能力,類似Perl,具有匿名lambda表達式,這點又讓Lisp黑客們感到親切。Python依靠Tk提供方便的GUI界面開發能力。
在所有的解釋型語言里,Python和Java最適合多名程序員以漸進方式協同開發大型項目。在很多方面,Python比Java要簡單,它非常適合與構造快速原型,這一點使得它對於Java有獨特優勢:對於那些既不很復雜,又不要求高效率的程序,Python十分合適。
Python的速度沒法跟C/C++相比,不過在今天的高速CPU上,合理地使用混合語言編程策略使得Python的上述弱點被有效地彌補。事實上,Python幾乎被認為是主流腳本語言中最慢的一個,因為它提供了動態多態性。在大量使用正則表達式的小型項目,它遜於Perl。對於微型項目而言,
shell和Tcl可能更好,Python顯得太過強大了。
總結:Python最出色的地方在於,它鼓勵清晰易讀的代碼,特別適合以漸進開發的方式構造大項目。其缺陷在於效率不高,太慢,不但跟編譯語言相比慢,就是跟其他腳本語言相比也顯得慢。
.NET介紹
.NET所實現的Java的功能
可控代碼 跨平台的虛機和偽碼 免費贈送命令行編譯器 純面向對象語言 對XML和XML web
serviCes的支持 和jsp對應的asp.NET 網頁上的程序 一套統一的中間件環境。
asp.NET跟jsp不是同一個層次上的web技術,
asp.NET使用完善的事件響應機制,WinForms類似的 WebForm技術,只有JSF跟Asp.NET有可比性。
.NET未實現的Java功能
免費的集成開發環境 多廠家支持,跨平台的成熟度
免費的IDE, #develop
, ASP.NET的有MS的WebMatrix 而免費開源的CLR實現,有MS自己的XP,FreeBSD,MaCOS下的 實現(原理演示不能進行商業應用),
Novell下的Mono項目, 已經發布了Beta1版本,在2004-6-30 將會發布Release1; 還有GNU的一個.NET實現!!
.NET實現的Java不具備的功能
多語言支持 強大的集成開發環境。 在Windows上媲美本機程序的速度。
對COM的支持,對vs的繼承 對widows form 、web form、伺服器端程序的圖形直觀編程。
追問:
哪種語言是今後編程的趨勢了?
回答:
個人感覺是 Java
C++ 好學一些
Java 復雜額
4. matlab的定位是科研還是應用有什麼用途
主要是科研,根據mathworks(製作matlab的公司)的說法,現在有「數百萬科研人員」在用matlab。
然後是關於效率。matlab的效率確實不高(除了關於矩陣的運算,matlab一開始就是一個進行矩陣相關運算的程序,經過數十年的不斷改進,可以說,無論是方便程度還是運算速度都無人能敵),這主要是因為它通過預設數量極其豐富的函數、工具包(通常以.m文件存儲),使使用者不必費心去從頭編寫程序,從而可以集中精力設計演算法;毫無疑問,演算法是最重要的,一個可以高效調用硬體計算能力的語言(比如科研普遍使用的fortran,一般程序員首選的C)對計算速度的貢獻,與一個優秀的演算法相比,簡直不值一提;而matlab則可以提供足夠便捷的發揮空間,自由試驗各種新老演算法。當一種新演算法形成後(或者改進後),可以幫助其他語言改進。
總之,用來做研究比較適合。
5. matlab程序員要學嗎
看專業方向,用不到就不用學。
MATLAB主要用於數值分析、數值和符號計算、工程與科學繪圖、控制系統的設計與模擬、數字圖像處理、數字信號處理、財務與金融工程等方面,其實跟一般的編程有些區別。
6. 數學建模一定要求學會 matlab 嗎我是會計專業,數學方面不是很專業學的也不系統,,應該掌握哪些呢
不一定,還有很多可以代替它的軟體!比如Mathematica,不過相比之下matlab 還是更勝一籌的,尤其它的畫圖功能簡直就是無敵的!數學建模是離不開畫圖的,從各個角度來觀察,不是別的軟體可以代替的!matlab 挺好學的,多看看書,一般的建模問題不會很讓你糾結的
7. matlab與C語言的區別是什麼
MATLAB是解釋語言,c是編譯語言。
MATLAB是一種由美國MathWorks公司出品的商業數學軟體,是一種數值計算環境和編程語言,主要包括MATLAB和Simulink兩大部分。MATLAB基於矩陣(英語:Matrix)運算,其全稱MATrix LABoratory即得名於此。它在數學類科技應用軟體中在數值計算方面首屈一指。MATLAB可以進行矩陣運算、繪制函數和數據、實現演算法、創建用戶界面、連接其他編程語言的程序等,主要應用於工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。
C語言,是一種通用的、程序式的編程語言,廣泛用於系統與應用軟體的開發。具有高效、靈活、功能豐富、表達力強和較高的移植性等特點,在程序員中備受青睞。
8. 學編程應該先學什麼聽說最好先不要學C語言,一個學長說應該先學MATLAB,是這樣嗎
關於到底首先該學習哪一種編程語言?這個並沒有一定之規。可以根據自己的具體工作需要進行編程語言的選擇。從來沒有聽說過最好不要先學 C 語言,而應該先學習 MATLAB 語言的。如果你的工作需要使用 MATLAB 語言進行各種復雜的數學運算,那麼你就可以首先學習 MATLAB 語言;但是如果在你的工作中根本就不需要進行各種復雜的數學運算,而是需要你編寫和計算機操作系統比較緊密的軟體,那麼你就必須學習、並精通 C 語言編程。
這就是我個人的親身體會。因為在我的計算機編程工作中,由於根本就不涉及到需要使用各種復雜的數學運算的地方,所以我到現在也從來沒有學習過 MATLAB 語言的編程;但是由於我的編程工作是和系統的相關性比較緊密的,所以我的 C 語言編程就比較熟練。
9. 我是學的機械自動化的,需要學習matlab嗎,我知道它是一個數學軟體,它的應用廣泛嗎
MATLAB具備卓越的數值計算能力外,它還提供了專業水平的符號計算,文字處理,可視化建模模擬和實時控制等功能。
你可以看看這個:
MATLAB的基本數據單位是矩陣,它的指令表達式與數學,工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,FORTRAN等語言完相同的事情簡捷得多.在新的版本中也加入了對C,FORTRAN,c++ ,JAVA的支持.可以直接調用,用戶也可以將自己編寫的實用程序導入到MATLAB函數庫中方便自己以後調用,此外許多的MATLAB愛好者都編寫了一些經典的程序,用戶可以直接進行下載就可以用,非常的方便。
MATLAB的基礎是矩陣計算,但是由於他的開放性,並且mathwork也吸收了像maple等軟體的優點,使MATLAB成為一個強大的數學軟體
當前流行的MATLAB 6.5/7.0包括擁有數百個內部函數的主包和三十幾種工具包(Toolbox).工具包又可以分為功能性工具包和學科工具包.功能工具包用來擴充MATLAB的符號計算,可視化建模模擬,文字處理及實時控制等功能.學科工具包是專業性比較強的工具包,控制工具包,信號處理工具包,通信工具包等都屬於此類.
開放性使MATLAB廣受用戶歡迎.除內部函數外,所有MATLAB主包文件和各種工具包都是可讀可修改的文件,用戶通過對源程序的修改或加入自己編寫程序構造新的專用工具包.
Matlab的官方網站:http://www.mathworks.com
Matlab的優勢和特點
(1)友好的工作平台和編程環境
MATLAB由一系列工具組成。這些工具方便用戶使用MATLAB的函數和文件,其中許多工具採用的是圖形用戶界面。包括MATLAB桌面和命令窗口、歷史命令窗口、編輯器和調試器、路徑搜索和用於用戶瀏覽幫助、工作空間、文件的瀏覽器。隨著MATLAB的商業化以及軟體本身的不斷升級,MATLAB的用戶界面也越來越精緻,更加接近Windows的標准界面,人機交互性更強,操作更簡單。而且新版本的MATLAB提供了完整的聯機查詢、幫助系統,極大的方便了用戶的使用。簡單的編程環境提供了比較完備的調試系統,程序不必經過編譯就可以直接運行,而且能夠及時地報告出現的錯誤及進行出錯原因分析。
(2)簡單易用的程序語言
Matlab一個高級的距陣/陣列語言,它包含控制語句、函數、數據結構、輸入和輸出和面向對象編程特點。用戶可以在命令窗口中將輸入語句與執行命令同步,也可以先編寫好一個較大的復雜的應用程序(M文件)後再一起運行。新版本的MATLAB語言是基於最為流行的C++語言基礎上的,因此語法特徵與C++語言極為相似,而且更加簡單,更加符合科技人員對數學表達式的書寫格式。使之更利於非計算機專業的科技人員使用。而且這種語言可移植性好、可拓展性極強,這也是MATLAB能夠深入到科學研究及工程計算各個領域的重要原因。
(3)強大的科學計算機數據處理能力
MATLAB是一個包含大量計算演算法的集合。其擁有600多個工程中要用到的數學運算函數,可以方便的實現用戶所需的各種計算功能。函數中所使用的演算法都是科研和工程計算中的最新研究成果,而前經過了各種優化和容錯處理。在通常情況下,可以用它來代替底層編程語言,如C和C++ 。在計算要求相同的情況下,使用MATLAB的編程工作量會大大減少。MATLAB的這些函數集包括從最簡單最基本的函數到諸如距陣,特徵向量、快速傅立葉變換的復雜函數。函數所能解決的問題其大致包括矩陣運算和線性方程組的求解、微分方程及偏微分方程的組的求解、符號運算、傅立葉變換和數據的統計分析、工程中的優化問題、稀疏矩陣運算、復數的各種運算、三角函數和其他初等數學運算、多維數組操作以及建模動態模擬等。
(4)出色的圖形處理功能
MATLAB自產生之日起就具有方便的數據可視化功能,以將向量和距陣用圖形表現出來,並且可以對圖形進行標注和列印。高層次的作圖包括二維和三維的可視化、圖象處理、動畫和表達式作圖。可用於科學計算和工程繪圖。新版本的MATLAB對整個圖形處理功能作了很大的改進和完善,使他不僅在一般數據可視化軟體都具有的功能(例如二維曲線和三維曲面的繪制和處理等)方面更加完善,而且對於一些其他軟體所沒有的功能(例如圖形的光照處理、色度處理以及四維數據的表現等),MATLAB同樣表現了出色的處理能力。同時對一些特殊的可視化要求,例如圖形對話等,MATLAB也有相應的功能函數,保證了用戶不同層次的要求。另外新版本的MATLAB還著重在圖形用戶界面(GUI)的製作上作了很大的改善,對這方面有特殊要求的用戶也可以得到滿足。
(5)應用廣泛的模塊集合工具箱
MATLAB對許多專門的領域都開發了功能強大的模塊集和工具箱。一般來說,他們都是由特定領域的專家開發的,用戶可以直接使用工具箱學習、應用和評估不同的方法而不需要自己編寫代碼。目前,MATLAB已經把工具箱延伸到了科學研究和工程應用的諸多領域,諸如數據採集、資料庫介面、概率統計、樣條擬合、優化演算法、偏微分方程求解、神經網路、小波分析、信號處理、圖像處理、系統辨識、控制系統設計、LMI控制、魯棒控制、模型預測、模糊邏輯、金融分析、地圖工具、非線性控制設計、實時快速原型及半物理模擬、嵌入式系統開發、定點模擬、DSP與通訊、電力系統模擬等,都在工具箱(Toolbox)家族中有了自己的一席之地。
(6)實用的程序介面和發布平台
新版本的MATLAB可以利用MATLAB編譯器和C/C++數學庫和圖形庫,將自己的MATLAB程序自動轉換為獨立於MATLAB運行的C和C++代碼。允許用戶編寫可以和MATLAB進行交互的C或C++語言程序。另外,MATLAB網頁服務程序還容許在Web應用中使用自己的MATLAB數學和圖形程序。
MATLAB的一個重要特色就是他有一套程序擴展系統和一組稱之為工具箱的特殊應用子程序。工具箱是MATLAB函數的子程序庫,每一個工具箱都是為某一類學科專業和應用而定製的,主要包括信號處理、控制系統、神經網路、模糊邏輯、小波分析和系統模擬等方面的應用。
(7)應用軟體開發(包括用戶界面)
在開發環境中,使用戶更方便地控制多個文件和圖形窗口;在編程方面支持了函數嵌套,有條件中斷等;在圖形化方面,有了更強大的圖形標注和處理功能,包括對性對起連接注釋等;在輸入輸出方面,可以直接向Excel和HDF5。
(8) Matlab常用工具箱介紹(英漢對照)
Matlab Main Toolbox——matlab主工具箱
Control System Toolbox——控制系統工具箱
Communication Toolbox——通訊工具箱
Financial Toolbox——財政金融工具箱
System Identification Toolbox——系統辨識工具箱
Fuzzy Logic Toolbox——模糊邏輯工具箱
Higher-Order Spectral Analysis Toolbox——高階譜分析工具箱
Image Processing Toolbox——圖象處理工具箱
LMI Control Toolbox——線性矩陣不等式工具箱
Model predictive Control Toolbox——模型預測控制工具箱
μ-Analysis and Synthesis Toolbox——μ分析工具箱
Neural Network Toolbox——神經網路工具箱
Optimization Toolbox——優化工具箱
Partial Differential Toolbox——偏微分方程工具箱
Robust Control Toolbox——魯棒控制工具箱
Signal Processing Toolbox——信號處理工具箱
Spline Toolbox——樣條工具箱
Statistics Toolbox——統計工具箱
Symbolic Math Toolbox——符號數學工具箱
Simulink Toolbox——動態模擬工具箱
System Identification Toolbox——系統辨識工具箱
Wavele Toolbox——小波工具箱
例如:控制系統工具箱包含如下功能:
連續系統設計和離散系統設計
狀態空間和傳遞函數以及模型轉換
時域響應(脈沖響應、階躍響應、斜坡響應)
頻域響應(Bode圖、Nyquist圖)
根軌跡、極點配置
1.補充新的內容:
MATLAB R2007b正式發布了!MATLAB 2007b於2007年秋節正式發布,TMW正式發布了MATLAB R2007b,新版本涵蓋:Simulink 7、新產品Simulink Design Verifier、Link for Analog Devices VisualDSP以及82個產品模塊的更新升級及Bug修訂。從現在開始,MathWorks公司將每年進行兩次產品發布,時間分別在每年的3月和9 月,而且,每一次發布都會包含所有的產品模塊,如產品的new feature、bug fixes和新產品模塊的推出。
在R2007b中(MATLAB 7.4,Simulink 6.6),主要更新了多個產品模塊、增加了多達350個新特性、增加了對64位Windows的支持,並新推出了.net工具箱。R2007b, released on March 1, 2007, includes updates to MATLAB and Simulink, two new procts released since R2007b, and updates and bug fixes to 82 other procts. R2007b adds support for the Intel® based Mac, Windows Vista™, and 64-bit Sun Solaris™ SPARC platforms.
這次的升級做了重大的增強,也升級了以下各版本,提供了MATLAB、SIMULINK的升級以及其他最新的模塊的升級。這個Matlab 2007版本不僅僅提高了產品質量,同時也提供了新的用於數據分析、大規模建模、固定點開發、編碼等新特徵。
其中MATLAB Builder for .net擴展了MATLAB Compiler的功能,主要有:
可以打包MATLAB函數,使網路程序員可以通過C#,VB.net等語言訪問這些函數;
創建組件來保持MATLAB的靈活性;
創建COM組件;
將源自MATLAB函數的錯誤作為一個標準的管理異常來處理。
R2007b 提供了重大的新功能: 直接在命令行使用 Real-Time Workshop 的 嵌入式 MATLAB 函數的 C 代碼生成。 另外,Simulink 中的嵌入式 MATLAB 函數塊支持多 M 文件中的演算法。
MATLAB R2007b新版本中,產品模塊進行了一些調整,MATLAB Builder for COM的功能集成到MATLAB Builder for .net中去了,Finacial Time Series Toolbox的功能集成到Financial Toolbox中了。MATLAB 將高性能的數值計算和可視化集成在一起,並提供了大量的內置函數,從而被廣泛地應用於科學計算、控制系統、信息處理等領域的分析、模擬和設計工作,而且利用 MATLAB 產品的開放式結構,可以非常容易地對 MATLAB 的功能進行擴充,從而在不斷深化對問題認識的同時,不斷完善 MATLAB 產品以提高產品自身的競爭能力。
作為和Mathematica、Maple並列的三大數學軟體。其強項就是其強大的矩陣計算以及模擬能力。要知道Matlab的由來就是Matrix + Laboratory = Matlab,所以這個軟體在國內也被稱作《矩陣實驗室》。每次MathWorks發布Matlab的同時也會發布模擬工具Simulink。在歐美很多大公司在將產品投入實際使用之前都會進行模擬試驗,他們所主要使用的模擬軟體就是Simulink。Matlab提供了自己的編譯器:全面兼容C++以及 Fortran兩大語言。所以Matlab是工程師,科研工作者手上最好的語言,最好的工具和環境。Matlab 已經成為廣大科研人員的最值得信賴的助手和朋友!