想自學MATLAB,應該用什麼方法?
先介紹情況,本人想利用假期和平時課餘時間自學MATLAB。關於基礎,在大一上有C++的必修課,雖然講得簡單但自認為掌握不錯。現在有下面幾個問題。 第一,不打算購買MATLAB的正版軟體,雖然並不是完全排斥盜版(大概會被鄙視吧),但是本著盡量不用的原則,我想知道有哪些比較好的開源軟體來替代和各自特點的簡介。(已經用搜索過相關內容了,所以更想知道你們自已的使用體驗) 第二,如果是使用相關的替代軟體,那完全按照MATLAB的教材學可以嗎?會出現不兼容的問題嗎?(剛開始學,應該只會涉及一些簡單基礎的使用吧) 第三,關於教材的選用。計算機編程的教材,用英文原版的好,還是中文翻譯的也可以?中學英語學得不太好,英文水平不高,雖然說英文原版的在一些工具的輔助下也可以看懂,但是閱讀速度很慢,而且很多注意力被分散到了理解英文的含義上,會降低學習的效率。這一點大家怎麼看?(慚愧了,不管怎麼說我也該好好學英語啊)如果方便的話,可以順便推薦教材嗎,學校的圖書館估計能找到好多。
謝邀 當年學MATLAB只是用來做GUI界面,好丟人,沒臉回答。
首先說明一點:至今還沒有能夠完全替代matlab的單一開源軟體,甚至商業軟體都沒有。matlab本質上是個大而全的工具集合加上一個不咋地的語言構成的計算平台,一開始就是為不怎麼深入編程的人可以通過編程做科學技術的工具,專業工具箱眾多,配合simulink可以做到各種逆天運算。學matlab語言本身只用很短的時間,大部分時間用在學各種工具箱…因此一本隨便什麼書掌握基本語法,然後看自帶幫助文件是絕對最優方案。根據使用領域不同,是有替代方案的。octave之類的模仿者缺部分工具箱缺simulink,但是不缺的部分沒問題;python全家福幾乎覆蓋了80%以上的工具,剩下20%如果不用也能替代。
額,瀉藥……題主還是校友呢……所以雖然水平不高但是還是來稍微提供一點幫助吧。
大二CS一名,剛好這個學期選了Matlab的選修課……不知道題主選過沒有……其實這個課雖然很基礎,但是畢竟是有老師教的,有資源就不應該放著不用嘛~~
就先介紹一下這個選修課的情況好了。
=0=0=0=0=0=0=0=0分割線=0=0=0=0=0=0
這個課貌似想選的人很多,是比較難搶的,祭出刷課腳本下學期補退選的時候拚命刷吧 = = 【雖然幾率比較小】
課上的話會從基本的語法講起,後來會說諸如符號計算,繪圖,圖像處理,GUI這幾部分的內容,基本上就是把基礎內容教給你了。
坑爹的地方是老師的聲音比較小,而且是隨著上課時間推移越來越小…………= = 最好佔個前排的位置吧,順便去圖書館借本Matlab相關的基礎書籍當個教材也是不錯的。
最後期末是要提交一份大作業,要求是帶GUI,功能自選,不能太簡單。所以說這個課作為一個入門來還是挺好的。
=0=0=0=0=0=0=0=0分割線=0=0=0=0=0=0
選修課的內容大概就這些了,下面是自學的方法。
因為題主數學系我是CS……關注的點不太一樣……我基本就是當做一個編程語言來熟悉一下,可能你是想用於學術方面……所以這方面沒什麼可以建議書籍或者資料……我就說一下學習方法之類的好了:
一般來說我接觸一門新的編程語言的話,會先除了官方文檔什麼教程都不看,慢慢寫出一個Helloworld來……= =
額,不是那種在屏幕上輸出一個HelloWorld的HelloWorld啦……這是個統稱,代表一個簡單但是有用的小程序。
我在初中和高中的時候這個HelloWorld是一個【一元一次、一元二次、二元一次、二元二次方程求解器】 = = 貌似當年學Bat的時候寫過一個,學C的時候寫過一個,學C++的時候寫過一個,學Python的時候寫過一個,學AAuto的時候寫過一個,學Java的時候寫過一個,學Android的時候寫過一個Android平台的…………
當然啦每個人可以有自己不同的HelloWorld,寫這個HelloWorld的目的是在於熟悉語法,基本上寫完這東西以後編程語言的變數,賦值,條件,循環等等基礎的語法和代碼格式就清楚了,為學習後面有深度的東西打個基礎。
因為目的在於語法和格式,所以這個HelloWorld的邏輯方面不能太複雜,基本上那個方程求解器的邏輯我寫了這麼多遍都快會背了 = =
在寫HelloWorld之後呢就是快速學習期啦,由於不同的人有不同的喜好,可以選擇看視頻,看實體書,看PDF,看官方文檔,跟博客教程等等等等…對於Matlab的話建議一邊開著Matlab一邊學,在shell里跟著打打代碼,寫點簡單的函數,腳本什麼的。
當基礎知識學完了之後,下一個階段是我最喜歡的,叫做【用它做點有趣的事】。
因為我們這個年紀還是對有趣的事比較感興趣的嘛~~只是學習什麼東西都沒弄出來和容易就乏味了。
什麼叫有趣的話那就見仁見智了……我列出幾個我弄過的來引發一下你的腦洞吧~~
當學Bat的時候我寫了個在開機時會自動運行,結束Explorer,然後彈個框,必須在框里輸入【我是豬】或者我的專屬密碼才把Explorer重新打開的小東西 = =
當學C的時候好像寫的是一個自動解數獨的小程序……起因是因為有個新聞說一個農民解出來一個什麼數學大師出的數獨,但是我覺得那個農民解錯了,他改動了題…… = = 【新聞好像是這個:http://news.xinhuanet.com/local/2013-05/26/c_115911023.htm】
當學C++的時候寫了個控制台里下五子棋的遊戲,帶人機對戰……好像後來2048火了的時候又寫了個2048……還是控制台里的……
當學AAuto的時候正好是我對360金山之流失去耐心轉向MSE的時候……但是又還想知道開機時間 = = 所以自己寫了一個附帶啟動項管理的顯示開機時間的小程序 丟在啟動文件夾里……後來碰到Win8加了快速啟動之後獲取的啟動時間不準了,又研究了一通WinAPI和事件記錄什麼的……
當學Android的時候,恩……正好和妹子快900天……就寫了個倒計時和已過天數的記錄器,見這個問題【http://www.zhihu.com/question/25258860/answer/30297701】
當學Matlab的時候……因為有期末大作業正好苦於沒什麼好玩的寫,然後就搜索Matlab能幹什麼好玩的事,結果搜到了這個http://www.zhihu.com/question/20248007,於是有想法了想做一個能彈曲子的模擬鋼琴,然後用元旦一天假擼了出來,在這:https://github.com/7sDream/piano-emulator
當學Python的時候,用Python3+pyqt重新實現了上面那個鋼琴:https://github.com/7sDream/pyqt-piano-emulator
腦洞挖掘就進行到這……誒誒對了Matlab的繪圖功能好像能做點什麼有趣的東西的說~~恩……就不幫你開腦洞啦~~覺得什麼好玩就寫什麼吧
我覺得這些小小的有趣的成果是學習一個新知識的過程中最重要的一步。因為能把知識融會貫通一遍,查漏補缺,還會有成就感~~有繼續學習的興趣,嗯嗯
=0=0=0=0=0=0=0=0分割線=0=0=0=0=0=0
總的來說我建議的自學方法就是:
1.寫個你熟悉的【HelloWorld】,沒有的話現在想一個吧。
2.開始學習基礎知識。能的話還是建議題主選一下選修課吧~~再借本書,一個學期就可以在不影響其他課程的情況下學會基礎了,而且還有學分。沒選上的話官方視頻,各大博客,論壇,PDF書籍
3.到期末大作業的時候做個好玩的東西出來吧!~查漏補缺加提高興趣~^0^/
4.開始學習高級點的內容,配上你自己專業方面和Matlab的結合方法和各種庫,比如科學計算,枚舉證明,圖像處理,聲波信號什麼的。因為學習的最終目的不一樣這個部分我就不推薦書籍或者學習網站之類的了……
5.在你學Matlab的基礎的過程中可以攛掇一下你沒選上Matlab但是又想學的小夥伴~~你來當他們的老師~~教別人是對知識最好的複習。
=0=0=0=0=0=0=0=0分割線=0=0=0=0=0=0
答完看到詳細描述里還有幾個小問題……
1.關於Matlab正盜的問題……
唉……我也很煩學校竟然不買集體正版……心塞。倒是不鄙視你因為我也再用盜版的Matlab……我電腦里除了三大軟體Matlab,Mathematica,Sony Vegas之外就沒盜版了……因為這三個軟體我一直在鄙視自己……但是苦於找不到替代品就只好心存愧疚的用著。其實我覺得Matlab和Mathematica學校應該買的說……但是我們現在也就只好用盜版了 = =替代的……Mathematica?也收費……
免費的話有Python……加上Ipython和Matplotlab,scipy,numpy其實能幹很多事了……或者直接裝個Sage?其實還真沒什麼免費的好替代的,Matlab有各種工具箱…… 【也可能是我不太關注數學方面不太清楚】2.換了替代品的話還是另找教材比較好,其實編程語言都想通……只要不是特別奇怪的,學會一個再學另一個會很容易入門的。
3.英文閱讀不太好的話還是暫時看中文的。
=0=0=0=0=0=0=0=0分割線=0=0=0=0=0=0
以上,祝你學的開心。
(*∩_∩*)@Badger
我還是不請自來了:-)
首先,說一下軟體的問題。如果學習 MATLAB 只是用來作為一個數學工具軟體的話,Octave 就夠了。不過 Octave 面向各個領域的工具箱確實少些,好在一開始只是學 MATLAB 本身,用到工具箱不多,Octave 足以應付。
不過,我還是提醒題主一句,很多學校是買了 MATLAB 的授權給學生免費用的。比如,我們學校就有 http://software.bnu.edu.cn/index_zyrj.jsp。不過,學校買的是 IP 授權的軟體,只能本校師生使用。題主可以查一下,或者諮詢一下學校信息網路中心的老師。另外 MATLAB 可以試用:https://cn.mathworks.com/programs/trials/trial_request.html?prodcode=MLs_iid=main_trial_ML_cta1。畢竟,學 MATLAB 還是用 MATLAB 學習的比較好。
其次,說一下怎麼學 MATLAB 和閱讀什麼資料的問題。學 MATLAB的過程中,很大一部分是學習語法和各個工具箱的使用。我很贊同把編程看做是一門手藝,所以竊以為入門的話,有個師傅帶一下是再好不過的。當然了,師傅領進門,修行在個人。入門之後就看自己了。但是,有很多同學可能一時找不到一個能幫助自己入門的師傅。沒關係,找些資料自己學學就好了,沒什麼可難的。
找資料的問題。我在學校圖書館,粗粗翻了一下國內出版的 MATLAB 入門學習書籍。個人感覺還是比較粗製濫造的,很多都是把 MATLAB 的文檔大致翻譯了一下。當然,有些書裡面還是可以看到作者是用心的,有很多實踐得出來的經驗。但是總體來說還是不太推薦。如果一定要看中文書籍的話,題主是數學專業的,薛定宇老師的《高等數學問題的 MATLAB 求解》應該很對你的口味,看了幾章也可以看出薛老師寫得很用心,附上鏈接 http://book.douban.com/subject/3248794/ (P.S. 這本書還出了英文版)。那麼,什麼資料比較靠譜呢?當然是 MATLAB 自帶的幫助了。
你看,想學什麼都可以。這個幫助也有在線版,直接上 MathWorks 的網站看就可以了。另外,現在幫助文檔已經有部分漢化的了,翻譯的還不錯。但是正版用戶才可以訪問。
插播一下,從本地化的角度來講,MathWorks 簡直差評,更不用說 MATLAB R2012b 之後,幫助瀏覽器動不動就崩潰的事情了。看看人家 Mathematica!
P.S. 前兩天 Stephen Wolfram 博士來我們學校推介他的 Wolfram Alpha 學習引擎和 Wolfram Language。學校以為沒啥人會理他,安排個普通教室大小的屋子,還讓我們學院幾個老師安排幾個學生去聽。結果,哪裡用得著安排,那情況根本是擠爆了嘛……
下面說一下其他的學習資源。首推的當然是 MATLAB 的官方社區——MATLAB Center:http://cn.mathworks.com/matlabcentral/?s_tid=gn_mlc_logo。裡面有 MATLAB 專家的博客,還有類似於 StackOverflow 的問答類板塊,還可以下載到很多示例代碼。然後推薦兩個第三方的 MATLAB 網站。首先是以色列人 Yair Altman 的網站 Undocumented MATLAB:http://undocumentedmatlab.com/,裡面有很多深入的內容,有些內容屬於 Hacker 手法。另一個是 MATLAB Tips:http://www.matlabtips.com/,一個博客類的網站,裡面的內容很基礎,可以和 MATLAB 自帶的教程一起學習。這個博客的博主是做認知神經科學研究的,可以算是計算機應用吧,應該對題主幫助很大。
好了,啰唆完畢,祝樓主學習愉快。與君共勉!學過一點Matlab
以我看過/到的書只推薦兩本.Experiments with MATLAB (英文版) (豆瓣) 和 MATLAB數值計算 (豆瓣)Matlab的爹寫的..., 而且有完整的代碼.內容深度廣度都有,還有趣味的,比如怎麼根據電話按鍵聲音識別出按的是哪些鍵啊.
雖然是自己兒子, 但是內部的代碼也可以使用別的語言重新實現,雖然講的是Matlab,更多的是講內部的實現.
以前這2本書Matlab官網是公開的, 不知道後來怎麼關了.第一,可以使用Octave, 完全按matlab學肯定不行,你還需要看一下相關語法
第二,沉下心看一本原版教材,有自信,有積累,後邊再看會輕鬆很多關於計算機教材可以去翻 @蕭井陌 的回答第一個問題:那就用盜版,MATLAB R2014b網上有正版完美破解,自帶幫助是最好的教材;
第三個問題:只要教材好,管它是英文原版,還是中文翻譯的,看就是了,遇到不會的單詞查詞典。找本MATLAB入門到精通之類的書,花兩三天時間,把上面的例子先敲一遍,以後你就知道怎麼做了
matlab的話,學校機房上一般也有正版吧?
推薦閱讀:
※如何用pascal(或其他語言,最好不是V字系列)編寫一個圖形界面程序?如:詩詞介紹程序。
※小朋友學會了編程是不是就對玩遊戲沒那麼有興趣了?有什麼適合的 App 推薦呢?
※工廠電氣行業人員30歲,想轉行做程序員,請問怎麼入門,只有一點點語言基礎,正在自學c。有什麼忠告?
※本科畢業對工作迷茫?
※學習 Python 很吃力,我是不是可以放棄編程了?