MATLAB 到底有多厲害?

看到這三個:

Mathematica 到底有多厲害? - Wolfram Mathematica

Excel 到底有多厲害? - 軟體

maple到底有多厲害? http://www.zhihu.com/question/54512255

這種系列的怎麼能少了 MATLAB 呢。尤其是和 Mathematica 的比較下,MATLAB 有什麼讓人眼前一亮的應用?


1.用MATLAB搞了個華容道小遊戲,並且弄了些圖片,看起來還不錯,玩了一天。

2.找過不少遊戲的MATLAB程序,不過最讓我佩服的還是這個飛機類的遊戲。

3.在網上看到一個帖子 是用MATLAB把Excel文件變成一幅畫的,類似於刺繡。

4.看到的這個3D時鐘也是極好的。

5.自己針對一些面試題寫的程序,模擬整個問題的過程。

對螞蟻爬桿問題進行模擬的通用程序|MATLAB/Simulink 程序源碼|MATLAB技術論壇

鑒別出1000瓶水中哪瓶水有毒需要幾隻小白鼠的程序|MATLAB 數學統計與優化|MATLAB技術論壇

6.GUI的應用 很方便。

7.分類 預測 擬合 聚類 各種問題 都能找到很不錯的內置函數或是工具箱。

8.從圖片中獲取坐標值,獲得曲線的(x,y)值。使用ginput函數,很不錯的東東

9.高數 概率 線代問題 都可以用MATLAB來完成

10.看到過MATLAB三維重建,2000年的建模題也是關於這個的,一直想嘗試,可惜找不到原圖片。

11.不得不提,Simulink是個很強大的東西,不過這方面的資料比較少,一般要自己看help。

12.與C++聯合編程,用MATLAB生成dll文件,從而用C++調用MATLAB程序。

——————————————————————————————————————————

寒假在家閑著有接觸了些代碼,隨便看看,隨便敲敲……

13.畫國旗 黨旗

【原創】基於Matlab繪製黨旗|MATLAB 其它技術應用|MATLAB技術論壇 【原創】基於Matlab繪製黨旗|MATLAB 其它技術應用|MATLAB技術論壇

怎麼用MATLAB畫中國國旗|MATLAB 圖像處理和計算視覺|MATLAB技術論壇 怎麼用MATLAB畫中國國旗|MATLAB 圖像處理和計算視覺|MATLAB技術論壇

14.迷宮遊戲

迷宮遊戲改編 並自動尋找路徑(解)

15. 數獨 (大牛做數獨 調用攝像頭拍個照 自動求解 還填充進去 帥呆了)

(PS:小弟數獨剛接觸,找個簡單的做了半小時做不出來,用這個程序一跑,秒殺!找個高難度的,照樣秒殺!)

Video Sudoku Solver - File Exchange - MATLAB Central Video Sudoku Solver


http://youtu.be/eDFZ9bRUgJA

Simulink simmechanics做的,用simulink 3d animation展現出來,懸架的計算當然是matlab,沒什麼難度,主要是空間想像力和空間幾何的計算,都是現學的,用了三個月時間完成。可以實時操控,除了比真實時間慢一點,略卡,還是挺好玩的!

整個模型除了剎車自己做的,輪胎是tass international公司(不知道跟TU Delft什麼關係)做好的模塊(魔術公式),沒有一個微分方程,都是用simmechanics的模塊做的,所以更像是自己親手用樂高積木搭起來的車一樣。

還特么是自動檔的!


這個問題怒答!!!本科前兩年在國內讀,對matlab的接觸僅限於老師上課時演示各種meshgrid畫圖展示,到了國外發現,每個工程狗都是matlab一把好手!簡直嚇哭。粘幾個我們用matlab模擬解決的實際問題吧。就比如最簡單的電路濾波問題:

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

再比如:

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

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

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

舉一個栗子:

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

當然,matlab這種浩瀚功能的宇宙級軟體,也不可能靠這幾張小圖就能列全,我只想說它真的真的是一款實用!!高效率!!!的運用各類數理知識解決實際問題的好!軟!件!!好軟體!好軟體!(重要的事情說三遍!)

所以如果題主真的感興趣或是準備出國讀理工科的話,matlab絕壁是基本技能(噢除了做飯)!!沒有!!之一!!沒有!!之一!!

贊的人多再更新哈哈哈~


我覺得MATLAB的優秀其實在於一個功能集成,在於他的平台化。

本來集成的模塊就比較多,但是它又提供了很多介面來使用其他平台諸如Excel等。

它最優秀的地方有兩個,一個是M語言,另一個是Simulink。這兩部分是很獨特還且在同類中算是比較優秀的。在數據分析上,M語言有不錯的表現,而且算是自成一家的解析性流派。後來學習Python,我倒覺得Python在一定程度上借鑒了它的思想,而它的部分功能借鑒於Perl。當然,後期的Python在數據分析、數據挖掘上也展示除了很強大的能力,不過不考慮軟體成本的時候MATLAB無疑還是很好的選擇。

而說到simulink,優秀就不用說了。各種行業的模塊庫讓開發模擬變得簡單,在加上強大的代碼生成能力讓控制軟體的開發變得更加輕鬆愉快。

更為可貴的是,M語言的使用讓我們搭建一個混合平台的開發環境成了可能。雖說Perl上你可以調用其他程序,Python你也可以。但是能夠本身提供幾乎全平台的功能又同時提供方法讓你去自由選擇其他工具中間插一腳,這實在是太方便了。哪怕是你從Perl、Python、C、C++、Java、shell等世界走過來的,你也可以迅速融入到平台。因為,在一定程度上講,著急沒時間學習的話你可以幾乎不學,先用你原有的技能開發然後通過MATLAB調用就OK。當然,後期你可能會還會留戀其他的語言,但是MATLAB的各個模塊功能則會時不時地給你一點驚喜。

所以,它的優秀更重要的是一種平台化。如果真的去對比Python和M誰的數據處理能力強之類的這種問題意義不大。假設是Python好,那我用Python就好了,然後用MATLAB調用。而平台的優勢則在於給你更多的選擇,你覺得什麼好就可以用什麼,你可以把五花八門的東西全都用上解決一個問題。MATLAB給你的並不是一個封閉的、受限的世界。在一定程度上我覺得它像Linux,給你高度的自由度與自我定製的選擇權。


可以用MATLAB作曲的~~哇喔

在MATLAB里運行該命令流:

sp=actxserver("SAPI.SpVoice");

sp.Speak("最炫民族風");

sp.Speak("作曲者");

sp.Speak("大東哥");

sp.Speak("演奏者");

sp.Speak("Matlab");

% Most shining national wind//最炫民族風 on Matlab

% The Modification is from "canon", not by me

fs = 44100; % sample rate

dt = 1/fs;

T16 = 0.125;

t16 = [0:dt:T16];

[temp k] = size(t16);

t4 = linspace(0,4*T16,4*k);

t8 = linspace(0,2*T16,2*k);

[temp i] = size(t4);

[temp j] = size(t8);

% Modification functions

mod4=(t4.^4).*exp(-30*(t4.^0.5));

mod4=mod4*(1/max(mod4));

mod8=(t8.^4).*exp(-50*(t8.^0.5));

mod8=mod8*(1/max(mod8));

mod16=(t16.^4).*exp(-90*(t16.^0.5));

mod16=mod16*(1/max(mod16));

f0 = 2*146.8; % reference frequency

ScaleTable = [2/3 3/4 5/6 15/16 ...

1 9/8 5/4 4/3 3/2 5/3 9/5 15/8 ...

2 9/4 5/2 8/3 3 10/3 15/4 4 ...

1/2 9/16 5/8];

% 1/4 notes

do0f = mod4.*cos(2*pi*ScaleTable(21)*f0*t4);

re0f = mod4.*cos(2*pi*ScaleTable(22)*f0*t4);

mi0f = mod4.*cos(2*pi*ScaleTable(23)*f0*t4);

fa0f = mod4.*cos(2*pi*ScaleTable(1)*f0*t4);

so0f = mod4.*cos(2*pi*ScaleTable(2)*f0*t4);

la0f = mod4.*cos(2*pi*ScaleTable(3)*f0*t4);

ti0f = mod4.*cos(2*pi*ScaleTable(4)*f0*t4);

do1f = mod4.*cos(2*pi*ScaleTable(5)*f0*t4);

re1f = mod4.*cos(2*pi*ScaleTable(6)*f0*t4);

mi1f = mod4.*cos(2*pi*ScaleTable(7)*f0*t4);

fa1f = mod4.*cos(2*pi*ScaleTable(8)*f0*t4);

so1f = mod4.*cos(2*pi*ScaleTable(9)*f0*t4);

la1f = mod4.*cos(2*pi*ScaleTable(10)*f0*t4);

tb1f = mod4.*cos(2*pi*ScaleTable(11)*f0*t4);

ti1f = mod4.*cos(2*pi*ScaleTable(12)*f0*t4);

do2f = mod4.*cos(2*pi*ScaleTable(13)*f0*t4);

re2f = mod4.*cos(2*pi*ScaleTable(14)*f0*t4);

mi2f = mod4.*cos(2*pi*ScaleTable(15)*f0*t4);

fa2f = mod4.*cos(2*pi*ScaleTable(16)*f0*t4);

so2f = mod4.*cos(2*pi*ScaleTable(17)*f0*t4);

la2f = mod4.*cos(2*pi*ScaleTable(18)*f0*t4);

ti2f = mod4.*cos(2*pi*ScaleTable(19)*f0*t4);

do3f = mod4.*cos(2*pi*ScaleTable(20)*f0*t4);

blkf = zeros(1,i);

% 1/8 notes

do0e = mod8.*cos(2*pi*ScaleTable(21)*f0*t8);

re0e = mod8.*cos(2*pi*ScaleTable(22)*f0*t8);

mi0e = mod8.*cos(2*pi*ScaleTable(23)*f0*t8);

fa0e = mod8.*cos(2*pi*ScaleTable(1)*f0*t8);

so0e = mod8.*cos(2*pi*ScaleTable(2)*f0*t8);

la0e = mod8.*cos(2*pi*ScaleTable(3)*f0*t8);

ti0e = mod8.*cos(2*pi*ScaleTable(4)*f0*t8);

do1e = mod8.*cos(2*pi*ScaleTable(5)*f0*t8);

re1e = mod8.*cos(2*pi*ScaleTable(6)*f0*t8);

mi1e = mod8.*cos(2*pi*ScaleTable(7)*f0*t8);

fa1e = mod8.*cos(2*pi*ScaleTable(8)*f0*t8);

so1e = mod8.*cos(2*pi*ScaleTable(9)*f0*t8);

la1e = mod8.*cos(2*pi*ScaleTable(10)*f0*t8);

tb1e = mod8.*cos(2*pi*ScaleTable(11)*f0*t8);

ti1e = mod8.*cos(2*pi*ScaleTable(12)*f0*t8);

do2e = mod8.*cos(2*pi*ScaleTable(13)*f0*t8);

re2e = mod8.*cos(2*pi*ScaleTable(14)*f0*t8);

mi2e = mod8.*cos(2*pi*ScaleTable(15)*f0*t8);

fa2e = mod8.*cos(2*pi*ScaleTable(16)*f0*t8);

so2e = mod8.*cos(2*pi*ScaleTable(17)*f0*t8);

la2e = mod8.*cos(2*pi*ScaleTable(18)*f0*t8);

ti2e = mod8.*cos(2*pi*ScaleTable(19)*f0*t8);

do3e = mod8.*cos(2*pi*ScaleTable(20)*f0*t8);

blke = zeros(1,j);

% 1/16 notes

do0s = mod16.*cos(2*pi*ScaleTable(21)*f0*t16);

re0s = mod16.*cos(2*pi*ScaleTable(22)*f0*t16);

mi0s = mod16.*cos(2*pi*ScaleTable(23)*f0*t16);

fa0s = mod16.*cos(2*pi*ScaleTable(1)*f0*t16);

so0s = mod16.*cos(2*pi*ScaleTable(2)*f0*t16);

la0s = mod16.*cos(2*pi*ScaleTable(3)*f0*t16);

ti0s = mod16.*cos(2*pi*ScaleTable(4)*f0*t16);

do1s = mod16.*cos(2*pi*ScaleTable(5)*f0*t16);

re1s = mod16.*cos(2*pi*ScaleTable(6)*f0*t16);

mi1s = mod16.*cos(2*pi*ScaleTable(7)*f0*t16);

fa1s = mod16.*cos(2*pi*ScaleTable(8)*f0*t16);

so1s = mod16.*cos(2*pi*ScaleTable(9)*f0*t16);

la1s = mod16.*cos(2*pi*ScaleTable(10)*f0*t16);

tb1s = mod16.*cos(2*pi*ScaleTable(11)*f0*t16);

ti1s = mod16.*cos(2*pi*ScaleTable(12)*f0*t16);

do2s = mod16.*cos(2*pi*ScaleTable(13)*f0*t16);

re2s = mod16.*cos(2*pi*ScaleTable(14)*f0*t16);

mi2s = mod16.*cos(2*pi*ScaleTable(15)*f0*t16);

fa2s = mod16.*cos(2*pi*ScaleTable(16)*f0*t16);

so2s = mod16.*cos(2*pi*ScaleTable(17)*f0*t16);

la2s = mod16.*cos(2*pi*ScaleTable(18)*f0*t16);

ti2s = mod16.*cos(2*pi*ScaleTable(19)*f0*t16);

do3s = mod16.*cos(2*pi*ScaleTable(20)*f0*t16);

blks = zeros(1,k);

% Melody by Schau_mal

part0 = [mi1f la0e la0e do1f mi1f ...

re1e re1s mi1s re1e do1e re1e do1e la0f ...

mi1f la0e la0e do1f mi1f ...

so1e re1s mi1s re1e do1e re1e do1e ti0e so0e ...

mi1f la0e la0e do1f mi1f ...

re1e re1s mi1s re1e do1e re1e do1e la0e so0e ...

mi1f la0e la0e do1f mi1f ...

so1e mi1e blkf blkf blkf ...

];

part1 = [la0f la0e so0e la0f la0e do1e ...

do1f re1e do1e la0f la0f ...

do1f do1e so0e do1e re1e mi1e so1e ...

so1e mi1e re1f mi1f mi1f ...

la1e la1e la1e so1e mi1e mi1f do1e ...

la0e la0e la0e mi1e re1s mi1s re1e re1f ...

mi1e mi1e so1e mi1e re1e mi1e re1e do1e ...

la0f so0f la0f la0f ...

];

part2 = [mi1e mi1e so1e mi1e mi1e so1e so1e la1e ...

do2e la1e so1f la1s do2s la1e la1f ...

la0f la0e so0e la0f do1f ...

re1e mi1s re1s do1e re1e mi1f mi1f ...

la0e la1e la1e so1e re1e mi1s re1s do1e re1e ...

mi1f mi1f blke blke blkf ...

do1e la0e la0e do1e re1f so0e so0e ...

mi1e so1e mi1e re1e do1f do1f ...

la0e do1e re1e mi1e re1e do1e so0e mi0e ...

la0f la0f blke blke blkf ...

];

part3 = [la0f la0e so0e la0f do1f ...

re1e mi1s re1s do1e re1e mi1f mi1f ...

la0e la1e la1e so1e re1e mi1s re1s do1e re1e ...

mi1f mi1f blke blke blkf ...

do1e la0e la0e do1e re1f so0e so0e ...

mi1e so1e mi1e re1e do1f do1e do1e ...

la0e do1e re1e mi1e so1e mi1e mi1e so1e ...

la1f la1f la1f la1f ...

];

part4 = [la1e la1s la1s la1e la1e la1e la1s so1s mi1e re1e ...

re1e re1s re1s mi1e mi1s so1s mi1e mi1s re1s do1e do1s la0s ...

la0f la0e so0e la0f la0e do1e ...

re1e mi1s re1s do1e re1e mi1f mi1f ...

la1e so1e mi1e re1e so1e mi1e re1e do1e ...

do1f do1f la0s do1s re1s mi1s re1s do1s la0s do1s

];

part5 = [do2e do2s do2s la1e la1s la1s so1e so1s so1s mi1e mi1s mi1s ...

re1e mi1s re1s do1e la0s so0s la0s so0s do1s re1s mi1s so1s la1s re2s ...

do2f do2f blks blks blks blks do1e re1e ...

mi1f mi1f mi1f so1e mi1e ...

la1f la1f la1e do1e so1e mi1e ...

re1f re1e re1s re1s re1e re1e do1e re1e ...

mi1f mi1e mi1s mi1s mi1e re1s do1s ti0e do1s re1s ...

mi1f mi1f mi1f so1e mi1e ...

do2f la1f la1f la1e do1e ...

re1f so1f so1f la1f ...

ti1f ti1f ti1f ti1f ...

];

part6 = [blkf blkf mi1e so1e mi1e so1e ...

mi1f la0e la0s la0s do1f la0e mi1s la0s ...

do1e do1s do1s re1e do1s re1s mi1f mi1f ...

mi1f la0e la0s la0s so1f re1e re1s re1s ...

mi1f mi1f mi1s re1s do1s la0s mi0s re0s mi0s so0s ...

do1f la0e la0s la0s re1f so0e so0s so0s ...

mi0f so0e so0s so0s do1f do1f ...

la0f do1e do1s la0s mi1e mi1s mi1s re1e re1s mi1s ...

];

% Combination, v1 is complete version, v2 is simple version.

v1 = [part0 part1 part1 part2 part3 part4 part0 part1 part1 part2 part3 part5 part3 part6 part3];

v2 = [part0 part1 part1 part2 part3 part5 part3 part6 part3];

% Let"s rock ^_^

s = v1;

s = s/max(s);

sound(s,fs);


magic函數,一個函數生成幻方,我入門時看到這個函數後,深深的迷上MATLAB。


我師兄告訴我Matlab除了不會生孩子,別的什麼都會。。。


我們大學一門課設的題目是用matlab 做個圖像處理軟體,堪比某秀秀。

所以有個著名的笑話:某文科妹子a指著我們專業某妹子b的造片說哎呀你造片修的真好看用滴啥修圖軟體啊?妹子b冷冷道,Matlab。妹子a卒。—————————————————

居然有贊,謝謝各位。( ′ ▽ ` )?


MATLAB調用KC901S矢量網路分析儀測量器件的S參數,測量結果直接保存到工作區。


Matlab的一個工具箱,現在已經發展成多物理場耦合模擬軟體了,買了一小部分模塊,花了一百多萬,哦,後續更新還要錢。


Drake (Home · RobotLocomotion/drake Wiki · GitHub), MIT馳騁Amazon Picking Challeng (Amazon Picking Challenge)和DARPA Robotics Challenge (Home | DRC Finals)的殺手鐧就是基於matlab寫的


神在創世第一天說要有matlab


就是因為你們這些人不把Mathematica作為Programming Language

所以Wolfram他老人家怒了,改名Wolfram Language


從該題得到啟發:能利用爬蟲技術做到哪些很酷很有趣很有用的事情? - 互聯網

還有:如何入門 Python 爬蟲? - 爬蟲(計算機網路)

最大感觸就是:工具如何用真的取決於使用者腦洞的大小!猜猜強大的小M在做什麼?

jc蜀黍,圖真的不是我的。。。

更新不匿了


馬特拉博大神讓無數研究生拿到了文憑。


哎,有些人連更梗都不會接就亂噴,不解釋了,開心就好。。。

==================原來回答===================

突然感覺電腦運行太快有些受不了,於是裝了matlab,於是開機的時候有了一些的時間刷刷今日頭條。
感覺自己編程水平需要降低,於是用了用MATLAB,從此變數名都是aa,bb
有一天,用python畫圖文章被拒,這麼好看的圖與期刊風格不符,換用MATLAB,那優雅的鋸齒,簡潔到沒有任何設計感的線條,粘貼到論文里Perfect!
你會最優化演算法有啥用!MATLAB一句話就行!
你會數值模擬原理有啥用!MATLAB一句話就行!

暫時想起的MATLAB的用處就這麼多。

我想寫本書《MATLAB:如何優雅的告別優雅》…


萬物基於Matlab(如果你足夠閑,且熟練掌握奇技淫巧)


用matlab做的第一個動態模型,是第一個我自己用matlab完成一個自己的設想,也是自己從此愛上matlab的標誌。把它貼出來吧,也幫後面有需要的人一個參考。

先說一下自己想要做的事:

現在手上有一條河五年的流量數據。有一個小鎮每天的用水都依靠這條河,但是流量大小完全看大自然的心情,所以有時候當天流過的水量就會不夠用(小於用水量),於是計劃建立一個蓄水池,蓄水池的大小用Excel計算出來,然後用Matlab模擬五年中蓄水池水量的變化。

實現思路:

Matlab自帶的plot、text、annotation函數都有一個屬性『eraseMode』,是否可以擦除,『none』表示畫過的圖形不可以修改,『xor』表示可以擦除修改,使用set函數設置plot、text、annotation的屬性,如位置,顏色等等,調用drawnow即可將修改的屬性實現,擦除上次圖形,使用新修改的圖形進行替換。

程序如下:

%% 從excel中讀取數據
[~,~,num] = xlsread("data.xlsx",2,"A4:I1831");
%% 畫水池
plot([3.5,3.5,6.5,6.5],[6.5,3.5,3.5,6.5],"blue","LineWidth",6)
axis([0,10,0,10])
text(4,2.5,"Reservoir","fontsize",18)
axis off
hold on
%% 標示注釋文本
plot([0.2,0.2,9.3,9.3,0.2],[8.5,7.2,7.2,8.5,8.5],"y","LineWidth",2)
text(0.3341,8.0,"The Volume:53itMm^{3}","fontsize",10,"color","red")
h1 = text(3,8.0,"Reservoir water:53itMm^{3}","fontsize",10,"color","red","erasemod","xor");
h2 = text(6.9931,8.0,"Date:1955/9/1","fontsize",10,"color","red","erasemod","xor");
annotation("arrow",[0.15,0.35],[0.5,0.5],"color","red","LineWidth",2)
annotation("arrow",[0.65,0.85],[0.5,0.5],"color","red","LineWidth",2)
annotation("arrow",[0.5,0.5],[0.28,0.08],"color","red","LineWidth",2)
h4 = text(0.4771,5.1994,"Daily Flow:","fontsize",10,"erasemod","xor");
h5 = text(6.9009,5.1994,"Runoff:","fontsize",10,"erasemod","xor");
h6 = text(5.0115,1.1889,"Demand:","fontsize",10,"erasemod","xor");
[m,~] = size(num);
x_0 = 3.55;x_1 = 6.4;y_0 = 3.6;y_1 = 6.5;
%% 標示初始水位
h3 = fill([x_0,x_0,x_1,x_1],[6.5,3.5,3.5,6.5],[0,1,0],"erasemod","xor");
%% 使用matlab自帶的drawnow函數製作動畫
for i = 1:m
set(h1,"String",strcat("Reservoir water:",num2str(53-num{i,5}),"itMm^{3}"))
set(h2,"String",strcat("Date:",num{i,1}))
y_2 = y_0+(53-num{i,5})/53*(y_1-y_0);
set(h3,"yData",[y_2,y_0,y_0,y_2]);
if(i==1)
set(h4,"String",strcat("Daily Flow:",num2str(num{i,3}),"itMm^{3}"))
set(h6,"String",strcat("Demand:0.31itMm^{3}"))
set(h5,"String",strcat("Runoff:",num2str(num{i,9}),"itMm^{3}"))
else
set(h6,"String",strcat("Demand:0.31itMm^{3}"))
set(h4,"String",strcat("Daily Flow:",num2str(num{i,3}-num{i-1,3}),"itMm^{3}"))
set(h5,"String",strcat("Runoff:",num2str(num{i,9}),"itMm^{3}"))
end
drawnow;
while(get(handles.pause,"value")==0)
pause(0.5)
end
pause(0.15)
end


撩妹,可以的~


mathematics 可能是世界上最好的狙擊步槍;

但matlab給你的是一座軍火庫。


推薦閱讀:

如何才能聽懂 Teahour 或 IPN 的《內核恐慌》?
C++ 調用 GetLastError() 返回 8 ,應該怎樣解決?
什麼樣的程序員需要多個顯示器? 或者說那種類型或者情況下的編程需要台式電腦配多個顯示器?
關於C語言中自增自減的問題?
學習 Python 用哪本書好?

TAG:軟體 | 編程 | 數學軟體 | MATLAB | 模擬 |