標籤:

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.臉部識別

小哥和他的狗都好萌,具體請戳。

Face Detection and Tracking Using Live Video Acquisition

1.動態識別

看程序猿寫代碼觀察自家貓主子是不是覺得很高大上。工程師一樣可以做到。

Live Motion Detection Using Optical Flow

2. PID控制

Learning PID Tuning I: Process Reaction Curve

By Yi Cao

3.不同複雜度下的路徑規劃

Path Planning in Environments of Different Complexity

4.三自由度工業機器手

Industrial Three-Degrees-of-Freedom Robot: C MEX-File Modeling of MIMO System Using Vector/Matrix Parameters

我盡量挑了一些圖片題目都很有趣的例子,其實很多人剛接觸到Matlab的時候都很喜歡問Matlab能幹嘛,因為自己並不明確想要用這個軟體做什麼。

看完基礎入門之後,自己在官網找找有趣的題目,對著做一遍,練練手,畢竟興趣導向學起來也快一些。或者看看官方提供的教學視頻,開闊一下思路。

Recorded Webinars

嗯,說到底最重要還是學好英語,不然這些都看不懂。


沒想到知乎首答竟然不是岩土工程專業問題。

本人在華中科技大學直攻博,機緣巧合要用Matlab做一個關於Matlab應用的展示,之前用Matlab做的更多是解決專業方面問題,例如:用Matlab編程評價邊坡穩定性利用Matlab編製NewMark- eta 法的計算程序以解決框架結構在地震荷載下的響應;用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模擬解決的實際問題吧。就比如最簡單的電路濾波問題:

一個矩陣 解決了手動算起來很麻煩的ODE方程。

再比如:

動態模擬傳送帶模型問題。解決工廠關於生產線超載或者生產線勞力過剩的問題,通過最基本的控制變數法,尋找到最佳可利用率最高的組合。

啊,如果你覺得這些都只是簡單的畫圖的話,你就太低估matlab了!!!

作為一個牛sang逼xin轟bing轟kuang的軟體!!它還有和flash異曲同工的效果!!!那就是,做實時模擬的動畫來實現你的要求。

舉一個栗子:

比如,這個藍色的小偷=_=在一定幾率被抓到或者逃走的模擬模擬,用matlab之後一秒就很清楚有木有!!!

當然,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 |