MATLAB 能幹嘛?
早在今年3月份,我就很想回答這個問題,無奈沒有什麼說服力,於是我花了將近5個月的時間,在公眾號里寫了30多篇帖子,無非就為了爭取有一天能回答這個問題。
先來說一說這5個月來,我都用matlab做了寫啥,摘取其中15篇帖子
1. Matlab讀取pdf文件:別讓低質量的忙碌製造一個努力的幻想
2. Matlab網路爬蟲(靜態頁面):Matlab還能看得懂上海房價?
3. Matlab網路爬蟲(動態頁面):為什麼說Matlab不適合網路爬蟲
4. Matlab與Excel的交互:如何在excel中畫畫
5. Matlab製作動圖Gif:Matlab如何動態呈現計算結果
6. Matlab提取曲線原數據:Matlab如何從曲線圖中提取原始數據
7. Matlab處理dbc文件:Matlab如何實現CAN Matrix的dbc與excel之間的一鍵轉換
8. Matlab圖像處理:程序員如何討好女朋友
9. Matlab製作GUI工具:如何通過Matlab做學習界面
10. Matlab加密:【抽獎貼】誰的人生沒有過一兩次需要強制關閉的時刻
11. Matlab自動生成word文檔:【一個被斃掉的作品】如何評估一隻股票的買點
12. Matlab製作音樂:Matlab如何演奏周杰倫的「晴天」
13. Matlab一鍵生成Simulink模型架構:Maltab如何根據html軟體報告快速復原模型架構
14. Matlab搭建電池模型:Simulink如何搭建電池模型
15. Matlab批量修改Simulink模型: Matlab如何大規模修改Simulink模型
Matlab是一個很強大的工具,強大到超乎你所能想像的範圍。而我所列舉的,都算不上專業範疇的,在專業人士眼中可能比較皮毛
如果你有興趣,歡迎關注我的微信公眾號"打浦橋程序員",謝謝
以上
MATLAB Examples
應有盡有。0.臉部識別
1.動態識別
看程序猿寫代碼觀察自家貓主子是不是覺得很高大上。工程師一樣可以做到。Live Motion Detection Using Optical Flow2. PID控制
3.不同複雜度下的路徑規劃
Path Planning in Environments of Different Complexity4.三自由度工業機器手
我盡量挑了一些圖片題目都很有趣的例子,其實很多人剛接觸到Matlab的時候都很喜歡問Matlab能幹嘛,因為自己並不明確想要用這個軟體做什麼。
看完基礎入門之後,自己在官網找找有趣的題目,對著做一遍,練練手,畢竟興趣導向學起來也快一些。或者看看官方提供的教學視頻,開闊一下思路。Recorded Webinars嗯,說到底最重要還是學好英語,不然這些都看不懂。沒想到知乎首答竟然不是岩土工程專業問題。
本人在華中科技大學直攻博,機緣巧合要用Matlab做一個關於Matlab應用的展示,之前用Matlab做的更多是解決專業方面問題,例如:用Matlab編程評價邊坡穩定性;利用Matlab編製NewMark- 法的計算程序以解決框架結構在地震荷載下的響應;用Matlab直接編製有限元計算程序計算簡單結構的應力和位移等等。不過在這次展示里,我想做點專業之外的東西,於是來到貴乎看看Matlab大佬們怎麼玩,注意到「打某橋程序員」能用Matlab爬房價,頓覺新鮮,之前只用python爬過視頻,沒想到還可以用Matlab做爬蟲。
武漢,每天都不一樣!武漢的房價也是一天一個樣,作為一隻科研汪,我要什麼時候才能在武漢的三環付個50平房子的首付啊(不好意思跑題了)!到底有多貴,我想來看看!於是決定在展示的一部分加入Matlab爬蟲的內容。下面是我用Matlab爬蟲獲取鏈家武漢新開樓盤信息的詳細過程(歡迎引用,無須本人授權),分享一波,拋磚引玉,歡迎各位大佬指導。
1、獲取網頁源信息。這個要用Matlab裡面的urlread函數,後面直接跟網址,加一個判斷15秒後read不到就不read了,並判斷對網頁讀取情況,代碼如下:
[a,status]=urlread("https://wh.lianjia.com/loupan/","timeout",15);
if ~status
error("讀取錯誤")
end
2、循環生成網頁網址。打開網頁#x27;https://wh.lianjia.com/loupan/#x27;,發現武漢新建樓盤信息有114頁,打開第二頁,網址為#x27;https://wh.lianjia.com/loupan/pg2/#x27;,查看了一下網頁的Java腳本,發現網址具有一定的規律性,翻開網頁源代碼,每一頁都是固定的格式,只是隨著頁數不同會有略微不一樣(見下圖)。
利用這個規律性用一個循環寫出這114頁網址的代碼並放在元胞數組裡面,代碼如下:
v1=cell(114,1);
v1{1,1}=["https://wh.lianjia.com/loupan/"];
for i=2:114
v1{i,1}=["https://wh.lianjia.com/loupan/pg",num2str(i),"/"];
end
3、對所關心的信息進行正則匹配。關於正則表達式,這裡有一個非常詳細的網站http://tool.oschina.net/uploads/apidocs/jquery/regexp.html,看完之後還不會的話可以自己再多了解了解,不難。這裡我關心的信息有樓盤的名稱、樓盤的超鏈接、樓盤的均價、樓盤的地理位置。這裡要說明一下,在23頁之後很多樓盤都沒有給出參考價,在這裡不關心這部分樓盤(只有樓盤的價格才是賦予我這隻科研汪奮鬥的動力)。當然也可以考慮沒有給出參考價格樓盤的信息,看完本回答如果你有興趣又不會做的話可以私信我。這裡打開第一頁網站https://wh.lianjia.com/loupan/,看看需要怎樣寫這個正則表達式。下面以第一個樓盤-碧桂園泰富城為例(碧桂園領導看到會不會一高興給我個5折購房優惠),看看要怎樣去寫正則。
可以看出樓盤超鏈接的匹配只需要匹配字母,前綴部分都一樣,不信大家可以去檢查下其他樓盤的源代碼是不是這樣,所以只需要進行一個非貪婪匹配即可,樓盤的價格也是這樣,只有數字,所以只用『(d*?)』做一個非貪婪匹配即可。樓盤位置和樓盤名稱要匹配的有中文,數字,字母和符號,而中文是雙位元組字元,則需要用這個正則表示式,即[^/x00-xff],它是專門用來匹配雙位元組字元的,所以也能匹配漢字。下面是我寫的對這22頁樓盤爬蟲的正則表達(為了匹配到所有項,所以有點長,如果有更好的寫法,請大佬指教)。
expr4="&
expr6="data-el="xinfang">([A-Z]{0,9}[^/x00-xff]{0,50}[0-9]{0,9}[A-Z]{0,9}[-]{0,2}[A-Z]{0,9}[^/x00-xff]{0,50}[0-9]{0,9}[-]{0,5})&";%樓盤名
expr8="&([A-Z]{0,9}[^/x00-xff]{0,50}[0-9]{0,9}[A-Z]{0,9}[-]{0,2}[/]{0,9}[0-9]{0,9}[A-Z]{0,9}[^/x00-xff]{0,50}[0-9]{0,9}[-]{0,5}[^/x00-xff]{0,50}[A-Z]{0,9}[[]]{0,1}[^/x00-xff]{0,50}[[]]{0,1}[0-9]{0,9}[^/x00-xff]{0,50})&";%樓盤位置
4、將獲取的信息存入元胞數組。這個不多講,比較簡單。不會的話稍微百度一下就知道了。下面給存信息的代碼。
for j=1:t33
v3{j+t1,1}=[common2,result3{j}{1},"/"];
v3{j+t1,2}=result5{j}{1};
v3{j+t1,3}=result4{j}{1};
v3{j+t1,4}=result8{j}{1};
end
至於中間的v3,t33是什麼,我將會在最後給出全部代碼,供大家理解。
到這裡爬蟲完畢,爬取到的信息如下圖,在本次回答中暫不給出對數據的處理,其實也簡單,大家也可以自己做,我的話有時間了再更新。
後面我會開通一個微信公眾號「科研百慕大」,裡面都是免費的資源,包括Mac軟體(什麼final cut Pro、motion、office、虛擬機pd、clean my Mac、Adobe全家桶、pycharm、texstudio、生物學的主流科研軟體的Mac版本,和很多在蘋果很貴在我這免費的軟體),科研軟體(側重土木,ansys,abaqus,flac3d 3.0,flac3d 5.0,Midas等),科研乾貨,科研心得,歡迎大家關注!
最後是整個爬蟲程序的代碼,如果想爬其他城市的新樓盤只需把網址中的『wh』改成其他城市首字母縮寫就好:
clear
clc
tic
[a,status]=urlread("https://wh.lianjia.com/loupan/","timeout",15);
if ~status
error("讀取錯誤")
end
v1=cell(114,1);
v1{1,1}=["https://wh.lianjia.com/loupan/"];
for i=2:114
v1{i,1}=["https://wh.lianjia.com/loupan/pg",num2str(i),"/"];
end
v3=cell(220,1);
t3=0;
for i=1:22
b=urlread(v1{i,1},"timeout",15);
expr4="&
expr6="data-el="xinfang">([A-Z]{0,9}[^/x00-xff]{0,50}[0-9]{0,9}[A-Z]{0,9}[-]{0,2}[A-Z]{0,9}[^/x00-xff]{0,50}[0-9]{0,9}[-]{0,5})&";%樓盤名稱
expr8="&([A-Z]{0,9}[^/x00-xff]{0,50}[0-9]{0,9}[A-Z]{0,9}[-]{0,2}[/]{0,9}[0-9]{0,9}[A-Z]{0,9}[^/x00-xff]{0,50}[0-9]{0,9}[-]{0,5}[^/x00-xff]{0,50}[A-Z]{0,9}[[]]{0,1}[^/x00-xff]{0,50}[[]]{0,1}[0-9]{0,9}[^/x00-xff]{0,50})&";%樓盤位置
result3=regexpi(b,expr4,"tokens");
result4=regexpi(b,expr5,"tokens");
result5=regexpi(b,expr6,"tokens");
result8=regexpi(b,expr8,"tokens");
result3=result3";
result4=result4";
result5=result5";
result8=result8";
t33=length(result3);
t3=t3+t33;
t1=t3-t33;
common2="https://wh.lianjia.com/loupan/";
for j=1:t33
v3{j+t1,1}=[common2,result3{j}{1},"/"];
v3{j+t1,2}=result5{j}{1};
v3{j+t1,3}=result4{j}{1};
v3{j+t1,4}=result8{j}{1};
end
end
toc
fprintf("鏈家網武漢站新建樓盤信息獲取完畢")
這個問題怒答!!!本科前兩年在國內讀,對matlab的接觸僅限於老師上課時演示各種meshgrid畫圖展示,到了國外發現,每個工程狗都是matlab一把好手!簡直嚇哭。粘幾個我們用matlab模擬解決的實際問題吧。就比如最簡單的電路濾波問題:
matlab的神奇玩法
都說matlab雖好,可惜太貴,但是果真如此嗎?首先,註冊一個mathworks的號,然後申請30天試用,下載matlab,激活。時間快到了,就用同一個號,再申請一個試用!30天到了,直接用這個新的激活碼再激活!我不知道一個號能申請幾次試用碼,也不知道一台電腦能激活幾次試用版。但是在我已觀測的範圍內,它還是無限續命的。參見 MATLAB 到底有多厲害?中 邵恩真 的回復
MATLAB 到底有多厲害? - 知乎 MATLAB 到底有多厲害? - 編程
俗話說的好,matlab除了生孩子,什麼都能幹
兩三年前在網上看到一個帖子是用matlab生成了卡農,但是是單音軌。於是蛋疼的我把它改成了多音軌,寫下了這首Matlab版寧夏。(為什麼選了這首歌,因為當時剛從寧夏回來)寧夏(Matlab Version)視頻
理科生的三行情書syms x y;f=sym("(x^2+y^2-1)^3=x^2*y^3");h=ezplot(f,[-1.5,1.5,-1.5,1.5]);
同學的博士師兄用Matlab修他和他媳婦的婚紗照。
不能...
Matlab可以做好多事情,只要矩陣和數值能解決的問題,Matlab就可以做到。PS:科研用就好了,否則……你懂的
大到航天航空,小到高數方程,都能用到matlab。
最近發現了matlab的一個奇淫技巧工科狗做完實驗可以用cftool直接進行曲線擬合,代碼簡單粗暴易懂,這樣就省去了好多畫圖的時間。而且這玩意還能p圖我會隨便亂說?畢業設計
Matlab啥不能幹?
依賴我在matlab方面的工作完全在單位站住了腳。
Matlab可以將pdf裡面的文字轉換成文本輸出,(限制:pdf文件裡面的文字必須是可以複製的,圖片以及圖片中的文字均無法識別),需要將大量pdf(比如幾百幾千個文件)中的文字提取出來的,即需要批量處理的,可以找我,可以高效運作,大大節省時間哦~not free 哦~,賺點外賣~
不能(正經臉)
---------------------------------------------------------------------------------------------------------------------------
什麼都能幹啊,可以用來學習,可以用來裝逼,可以用來撩妹(————並不)
基本上是只有你想不到,沒有它做不到。
-------------------------------------------------------------------------------------------------------------------------------
接著這個問題去Matlab官網bbs逛了一圈,貼幾個有意思的答案:
- What is your unusual use of MATLAB?
- 取暖器:運行一個無限循環的loop,把發燙的電腦放在被子下面
- 做個紅色激光控制器用來逗貓
- 鬧鐘/聽歌/p圖/分析體重變化
- 分析手機屏幕損耗程度
- 分析馬臉結構
- 用來解迷宮Solving Mazes with Image Processing Algorithms
- 拍照解數獨Video Sudoku Solver
--------------------------------------------------------------------------------------------------------------------------------
舉我上學時候做的東西作為例子吧。
- 大三的時候做了一個顆粒物質運動的課題,用matlab模擬了一下沙漏裡面沙子的運動狀態。
- 用來模擬齒輪轉動順便觀察一下運動軌跡。不要吐槽配色,這是老師要求的。。。
- 畫圖
- Simulink模塊做控制模型分析
- 做有限元分析。一般一些簡單的模型就直接列個矩陣解方程啦~不過後來基本都用軟體直接做。但是理論上都是可以用matlab做出來的。(比如comsol就可以直接查看Matlab腳本)。有限元做出來的圖看上去都可以很酷炫了,下面隨便從COMSOL官網拉一張:
- 用Matlab給LEGO小機器人編程(這是老師做的一個小機器人,可以沿著黑線的軌跡走路)
- 當然還有很多很多,別的系的同學有用matlab來p照片的,生成照片牆的,搞音樂的,etc。
matlab的征途是星辰大海…
科研必備神器~
論文模擬神器~處理矩陣有優勢,各種工具包ksvd, omp,BP……學起來比較簡單~不過最近深度學習,機器學習比較火,python也隨之火起來了(我只是站在機器學習與模式識別方面說得,有點片面了)推薦閱讀:
※怎樣利用MATLAB求一維含時薛定諤方程的數值解?
※數學中求解整數規劃在matlab中怎麼使用呢?
※MATLAB做圖像處理到社會上實用嗎?
※為什麼談論深度學習工具時,很少有人討論matlab的神經網路工具包?
※Mathematica和c++是探索 宇宙萬物 本質規律最好的工具嗎?
TAG:MATLAB |