初學matlab,有什麼學習路線可以推薦?
想學習matlab做數據分析,但是不知道分析什麼,只是覺著以後數據分析會經常用到,所以想提前學習matlab。不知道如何下手,現在借了本《matlab實用教程》。
就是想問下知乎的大神么,學習matlab的路線是什麼?先學什麼,後學習什麼。還有就是有沒有什麼推薦書和推薦的學習資料,視頻教程相關~~
我注意到反對MATLAB的都是數學出身的。
數據分析常用的MATLAB、mathematica、R、Python我都用過,目前80%時間用MATLAB,20%時間用Python,另外兩個用的很少。我其實很理解知乎數學家的想法,mathematica那種接近原生數學語言的表示方法肯定很對他們的胃口,因為他們平時就是這樣做題的,現在只是把紙上的內容謄到電腦上而已。
我也不是想給MATLAB唱讚歌。MATLAB確實有一些反人類的地方,比如inputParser,比如畫圖丑(奇怪的是同樣的圖複製粘貼到AI里卻好看了很多)。這都是客觀存在的問題。
執著於語言之爭,肯定是新手。要針對不同的需求,選擇不同的工具。最近有個關於PHP的回答很值得參考。
不過題主你也沒說你的具體情況,我沒法給具體的建議,只能瞎猜。
如果你也是學數學的,mathematica估計會對你的胃口。
如果你是信息類工科,比如計算機、軟體,最好都學了吧。反正c++、java這些都會了,學個MATLAB什麼的根本不是個事。
如果是其他工科,比如機械、造船,選MATLAB吧。
如果是統計相關,選R或Python。個人覺得R除了dataframe剩下的都沒啥意思,讀寫文件都特別蛋疼。
學語法快則一周,慢的話一個月再怎麼樣也應該看完了。然後上手寫程序玩。任何計算機語言的學習都是寫出來的,不是看書看出來的。
我目前的情況是用MATLAB控制自己搭建的實驗裝置運行、採集數據和分析,用Python做生物信息學分析。反對那些說matlab不擅長數據分析的答案!
參考這個博客:Data Mining in MATLAB
博主的使用Matlab理由:I am a data miner with more years of experience than I care to remember. I"ve worked in a variety of fields and used a wide array of tools, but MATLAB is my tool of choice.
這個案例雖然不能說明MATLAB比Python強,但至少能證明MATLAB在這方面並不弱。你能想像一個做數據分析幾十年的人最後選擇了一個不擅長數據分析的工具嗎?
肖智博的回答雖然激進, 但是很有道理. 我從另一個角度說幾句.
從你所描述的問題來看, 你在方法尚不明確的情況下想先學工具. 這是比較大的誤區. 也是中國學生最常見的學習思路. 工具永遠只是工具, 工具永遠代替不了理論和方法. 如同把一把鋸交給你和魯班, 同一個工具, 但是效力截然不同.
如果想學數據分析, 還是將數學以及統計等基礎弄好, 工具不妨放到稍後. 如果真是想把matlab搞定, 一個中等規模的project和自帶幫助足矣.
我覺得Matlab的學習主要分三步:
第一步,了解基本語法。如果你有其它編程語言基礎,只需隨便找一本Matlab教材,在圖書館看一下午就夠了。命令太多怎麼辦?放心,除了一些基礎的東西以外,大多數內容很快就會被忘記的。你不需要現在就記住所有命令,要用的時候去查就好了。
第二步,增加知識的廣度。在這個階段主要是見多識廣:原來還有這個命令可以這麼用啊。你可以上MATLAB中文論壇和MATLAB技術論壇,還有就是每天學習一個小技能。見多識廣的好處就是在以後想完成某些操作的時候,至少能知道有哪個命令可能會有用。迷路時,最難的不是努力走,而是不知道往哪裡走。
第三步,增加知識的深度。在這個階段你可以做一些具體的項目,通過具體項目來學習是最好的方式。比如,如果你以後想做圖像處理,可以試著解決如何打開一張圖片,如何用矩陣處理圖像,如何做圖像插值放大,如何銳化圖像。
對Matlab使用中的經驗、教訓或者好玩的東西感興趣的童鞋,可以看看我的微信公眾號「科學計算編點程(微信號:kexuebc)哦」。用卡通連載的形式,每天推送一條Matlab實用小技巧,例如:
學習Matlab的三個境界,歡迎關注
作為資深matlab用戶,我覺得如果你是要做數據分析,尤其是統計/機器學習這塊,還是像第一名@肖智博 說的趁早改用Python和R吧。Matlab在control/signal processing這種偏傳統工程的應用更廣泛,其工具箱也很全很強大,特別是有simulink模擬需要的;而在統計和機器學習這塊反倒偏弱。
matlab最大的好處就是快速實現原型演算法,其語法簡單且數據結構強大,學會上手很快,你隨便翻點書看看都好(其實基本都是翻譯它的help罷了...有耐心就直接挨著看幫助是最好的)。matlab的核心就是矩陣運算及相關的演算法,這也是幾乎所有科學計算會涉及到的基礎,如果從這個角度說,學習一下matlab建立一些概念和矩陣思維的方式也是有幫助的。但真要精通其實是要時間/經驗和項目來堆積的:例如所有地方都會提到matlab循環效率很低,盡量轉變成矩陣運算的方式,但這個技巧在不同問題下可能有不同的實現技巧,只有靠實踐慢慢總結經驗了。
我也曾經短暫有一年項目用過Python,感覺這是通用高級語言里最接近matlab的一個語言,其dictionary這個數據結構就類似matlab里的cell,很好很強大,也是非常適合做快速原型開發和研究工作,但通用性/介面什麼的比matlab就方便多了,在統計和機器學習這邊的演算法庫也更全。R了解不多,統計方面的演算法庫不成問題,但通用編程上可能弱一些。
不過說到最後也是@Tiebin 說的,工具始終只是工具,都是為你目的服務的,只是誰更趁手罷了;學習一個新工具的使用也是研究和工作中經常會遇到的事情,不應該成為一個很耗精力的事情,通過具體項目來學習是最好的方式。我沒學過Python,對它所謂的優缺點也不便多作評價。但是我覺得MATLAB很好用,上手簡單,操作方便,而且有很多現成的工具箱可以使用,加快了完成工作的速度。
如何學習他呢? 我覺得要分兩種情況來討論,你如果有過其他語言的基礎的,比如C,C++什麼的,那就建議直接看北航出版的 精通matlab2011a,是張志涌寫的。他還寫過其他的MATLAB教程,都是國內經典的。 如果你事先沒有相關的語言基礎,怕hold不住的話,可以先看這本,MATLAB揭秘,鄭碧波女士義務翻譯的,老外寫的書總是很細緻,讓人看得很easy的,你可以試試看。
當然,上面那兩本都是基礎性的,入門的。至於進階的書本,要看你拿MATLAB做什麼,比如圖像處理,剛雷薩斯的《數值圖像處理》;金融建模,張樹德《金融計算教程-MATLAB金融工具箱的應用》等等專業性的教程。
除了書本資源,還有網站,這兩個論壇挺好的,MATLAB中文論壇|Simulink中文論壇MATLAB技術論壇|Simulink模擬論壇|MATLAB函數百科|MATLAB論壇|Simulink論壇|MATLAB下載|MATLAB教程,裡面有很多帖子,資料。
以上。
多說一句:practice make success
刪了Matlab,用Mathematica!
前提是你不是那些喜歡用許多什麼奇奇怪怪的工具箱的工科生...
Mathematica可以申請免費試用的,或者,問問你的學院看有沒有買授權?
如果覺得貴的話(真的很貴T_T),就如@肖智博所說的,用Python吧,理由講的很充分了。拿不定主意,想要點直觀的感受的話,可以參考這位知友的答案如何在論文中畫出漂亮的插圖?
珍惜生命,遠離Matlab!!!
——被Matlab噁心過的數學系學渣的肺腑之言
刪掉 Matlab,學Python!
------- 詳細解釋分割線 ------
現在這個階段,做數據分析,如果沒有什麼羈絆,那麼為什麼要用Matlab呢?而且你也說了,你都不知道分析什麼,頁不知如何下手,那麼既然邀請我了,我就想在你開始之前阻止你走向不歸路。
第一點,Matlab是要收費的。
我不管你用的是收費版還是盜版,但是一個不爭的事實是既然免費的Python和R能做到的東西,為什麼要花錢或者破解去用Matlab呢?
另外,頁由於Matlab是收費的,Python和R是開源的,現在越來越多的人都不用Matlab了,也就是說,你得到的技術支持和信息來源越來越少了。
第二點,Matlab是專業軟體,功能有局限性!
Matlab的全稱是MATrix LABoratory,專註於矩陣計算,其上的很多功能都建立在矩陣運算上。早期的數據分析工作,以及數據挖掘、機器學習處理的數據比較簡單,乾淨,基本上拿來就用。現在,數據環境這麼複雜,你能用Matlab去微博上抓一個月的數據下來嗎?你能用Matlab把抓下來的網頁中的文本提取出來嗎?至於其他諸多的事情,Python幹起來都比Matlab容易得多。
第三點,技術支持!
Python開源,Python自身的社區就比較完善,再加上Github, StackOverflow的存在,你不會的問題,總能在最短時間內找到人回答你。你用Matlab,除了國內的那些論壇,你還能去哪?
------ 上大學四年數學系被Matlab傷到有陰影的分割線 ------
人生苦短,我用Python!
(其實我就是想回答一下題主的問題,不想討論兩種語言的優劣,上面也是我的理由而已,如果您不同意,我也沒招,所以我關閉了評論)
-------------------------------------------------------------------------------------
如果你覺得我的答案對你有幫助,可以考慮向我付費:
http://w.url.cn/s/AAVHe65 (二維碼自動識別)
《線性代數》要學好。
剩下的,就是直接上手應用吧。
MATLAB的幫助系統非常好,用好了可以不看書
不知道提問者現在的具體情況
如果是學工科的學生,並且對機器學習,數據分析,模擬之類的有興趣,matlab還是值得學習的(比如很多很多論文的演算法都是matlab實現的,並提供matlab源碼;學術圈python用得還比較少吧)
如果有編程基礎(c, c++, java等), matlab對你來說學起來應該會很輕鬆,我基本上是邊用邊Google,邊看doc自然而然的就學會的。下面談下我的經驗:
剛開始可以找一些演算法(比如機器學習里的kmeans, pca, knn,圖像處理里的傅立葉變換等),理解演算法本身,然後在網上找一些高手寫得源碼讀懂,再模仿的重寫一遍。(在這一步,就不要用matlab自帶的演算法了)
在模仿別人源碼實現的時候注意下面兩個問題
1 熟悉向量化操作 2 熟悉一些命令 前者與矩陣操作有關,能大大提高程序效率和簡潔性; matlab內部集成了很多演算法和工具,熟悉使用大大節省自己開發的時間
接下來你就可以做具體的事了,遇到不會的就Google(百度),看文檔,上stackoverflow提問等
如果已經工作了,可以考慮直接學習python,能做的事更多;但學一下matlab也很好,畢竟學起來比python要輕鬆很多
其實無論用什麼工具,使用者無非是把自己的想法抽象出來再翻譯成一種語言,而學習相應的語法命令,只不過是「按規定辦事」。 同時不同語言的「思維方式」也有些不同,使用matlab就要熟悉其向量化操作的思維。help doc lookfor
這個問題好。matlab書浩如煙海,這裡僅推薦一本張志涌的matlab教程,把這本書的matlab和simulink基本知識搞清楚足矣。其他那些toolbox用到再學。
有點長進後去些有名的論壇比如ilovematlab看些稀奇的問題及稀奇的函數。
大功告成!
本人就是這麼修鍊。
學一種語言不用從最基礎的語句學起,你給自己定一個項目或者是完成的工程(如:做個車牌的識別,網上很多源代碼可以下載),然後從看別人的代碼開始一步一步豐富自己不明白的地方,這樣才能很快的進步。
也可以諮詢老師,看他有什麼可以推薦的(如:往年的畢設),基礎知識書上都差不多,你可以先確定方向(如:圖像處理,神經網路,模式識別,信號處理,做一些小遊戲,MATLAB就是這麼強大 !!!)然後確定什麼方面的書。
本人使用matlab一年有餘。
首先matlab是工具。只要正常使用就行。我覺得只要你學習一門編程語言達到了入門的程度。使用matlab綽綽有餘。
其實與其說學習matlab,不如去學習matlab後面隱藏的演算法。
學好線性代數,找一本演算法導論。嘗試使用matlab實現裡面的演算法,那就有意義的多。
matlab不用怎麼學,很簡單,會C語法基本一天就會了。問題的難度在於數據分析。
工具永遠是工具,學好基礎 ,工具需要用時 直接去學習就好。
Matlab做計算有天然的優勢啊。不過初學者會被維數這件事情傷得。。。
學習的方法樓上都答得挺好的,自己多寫幾個程序就知道了,特別是做一個相關的項目什麼的。哎,都是數學系的苦逼孩子
推薦閱讀:
※政府的數據公開有哪些商業價值?
※想轉專業機器學習(人工智慧)需要學哪些課程?
※為什麼《英雄聯盟》有這麼多玩家?
※Python2和Python3哪個更適合初學者學習來爬蟲呢?
※2016 年美國大選的投票結果中,有哪些數據值得分析?