MATLAB這個語言灰常牛B你們都知道,封裝性良好且支持混合編程。好比...
html
OK,如今咱們打開MATLAB
shell
Hint: 官方幫助文檔很給力!
編程
在MATLAB程序中,因爲矩陣運算的重要,咱們能夠理解爲「一切變量皆向量」。less
學習語言時,許多時候咱們都從Hello World開始,在MATLAB中,這一個程序是這樣的:
函數
disp('Hello World!');
恩,確實只須要一行...
工具
按你胃(Anyway),咱們還能夠給一個變量賦值
學習
a = 2
還可讓給一個變量賦值爲向量ui
a = [1 2 3 4]
而後,再試一下矩陣spa
a = [1 2 3; 4 5 6; 7 8 10]
Hint:試一試這些命令,看看程序返回的是什麼,再在末尾加上分號(;)試一試!
code
工做區:當前在工做區(workspace)可用的變量叫作Workspace Varibles。好比,咱們運行這兩條命令:
A = magic(4); B = rand(3,5,2);
而後,你就能夠在workspace看到它們
另外,咱們能夠隨時使用whos命令來查看當前變量的屬性
還能夠這樣。。
MATLAB運算符:在程序中的加減乘除仍是用咱們熟悉的+、-、*、/,不過在MATLAB中還有一個「左除」,即\,有A\B = B/A。
矩陣乘除運算直接能夠用(*/\)這三個符號運算,另外還有點乘(.*)符號表示對應位置相乘,點除、點方(.^n)同理。
不妨本身試一下 B = A.*A
輸出格式:試一試輸入format long命令,再輸入C = B * inv(B)。再把long換成short再試一下
級聯:即把兩個矩陣鏈接起來,通常有兩種方式——橫向(C = [A,B])和縱向(C = [A;B])兩種方式
註釋:打一個百分號,在這一行後面寫註釋便可
復數:虛部用i或j表示便可,如:
c = [3+4i, 4+3j; -i, 10j]
矩陣元素的索引:好比A是一個4*4的矩陣,MATLAB提供了兩種索引方法:一是A(行,列),如A(4,2)表示A中第4行第2列的元素;二是A(index),其中index是按列向下數(和C/C++的按行從左往右恰好相反),如A(3)表示第一列第三行的元素,A(8)表示第4行第2列的元素
Hint:試一試越界的index(如A(17)和A(5,3)),會有什麼後果?
那麼要同時取幾行或幾列,要怎麼作呢?
這時可使用冒號:如A(1:3,2)就是矩陣A的1-3行第二列的元素;A(3,:)是矩陣A第三行
冒號還能夠這樣用:
start:step:end
如D = 0:10:100運行後,D = [0,10,20,30,40,50,60,70,80,90,100]
保存變量到文件:save命令,以.mat爲後綴便可,如 save myfile.mat
從文件載入變量:load命令,如load myfile.mat
如何清空:clear命令清空變量,clc命令清空執行過的命令
字符串:MATLAB中的字符串操做和C/C++中相似(就連字符串處理函數的取名也和C/C++差很少。。),這裏推薦這篇博文:http://www.cnblogs.com/emanlee/archive/2012/09/13/2683912.html
和普通變量同樣,字符串也是「向量」,所以也能夠級聯。具體命令爲:好比此時b = 'tencent',執行a = ['str',b];a就變爲'strtencent'。
f = 71; c = (f-32)/1.8; tempText = ['Temperature is ',num2str(c),'C']
其中num2str函數能夠把數字轉化成字符串形式。
接下來,咱們來看看如何繪製2D和3D的圖像吧!
2-D做圖利器--plot函數: 先來看個例子,如何繪製y=sin(x)的圖像
x = 0:pi/100:2*pi; y = sin(x); plot(x,y)
這時候就能夠看到圖像了。而後能夠加上這些命令美化一下
xlabel('x') ylabel('sin(x)') title('Plot of the Sine Function')
Hint:試一下將plot(x,y)改成plot(x,y,'r--')繪製出的圖像!
若是要在一張圖上繪製多條曲線,則能夠用hold on命令
x = 0:pi/100:2*pi; y = sin(x); plot(x,y) hold on %繼續在這個Figure上做圖 z = cos(x); plot(x,z,'r--') xlabel('x') title('Plot of the Sine and Cosine Function') legend('sin','cos')
3-D做圖利器--surf/mesh函數:
3D圖像能夠用meshgrid函數作一個平面,再根據函數方程做圖;也能夠用參數方程做圖。
%作 z=x*e^(-x^2-y^2) 的圖像 [X,Y] = meshgrid(-2:.2:2); %構造平面 Z = X .* exp(-X.^2 - Y.^2); %構造圖形 subplot(2,1,1); surf(X,Y,Z); title('surf'); %使用surf做圖 subplot(2,1,2); mesh(X,Y,Z); title('mesh'); %使用mesh做圖
上邊是用surf函數作的圖,下面是用mesh函數作的圖,喜歡哪一個就用那個啦~
Hint:查閱一下MATLAB官方文檔的subplot函數!
而後咱們用參數方程作個圖:
t = 0:pi/10:2*pi; [X,Y,Z] = cylinder(4*cos(t)); %即p=4cost subplot(2,2,1); mesh(X); title('X'); subplot(2,2,2); mesh(Y); title('Y'); subplot(2,2,3); mesh(Z); title('Z'); subplot(2,2,4); mesh(X,Y,Z); title('X,Y,Z');
MATLAB編程
在MATLAB中編輯文件(若是沒有,自動建立.m文件):edit Calcmean
至於什麼循環、條件分支語句,聰明的你確定一看就能明白:
%Calcmean.m %計算隨機生成數的平均值 clear; %清除工做區 nsamples = 5; npoints = 50; k = 1; while k<=nsamples %循環 iterationString = ['Iteration #',int2str(k)]; disp(iterationString) currentData = rand(npoints,1); sampleMean(k) = mean(currentData) k = k+1; end %若是去掉 k = k+1; 一句,並把while一行換爲for k = 1:nsamples,獲得的結果是同樣的 overallMean = mean(sampleMean) if overallMean < .49 disp('Mean is less than expected'); elseif overallMean > .51 disp('Mean is greater than expected'); else disp('Mean is within the expected range'); end
按下工具條裏面綠色的「Run」,就能夠運行它了!(PS:感受跟Python同樣同樣的!)
Hint:查閱一下官方文檔對mean函數的介紹!
Hint:官方文檔快速查閱命令有doc和help,如
doc mean help mean
分別試一下吧!
不知不覺寫了一下午,沒想到我也能一口氣寫出3400字的博文,那麼MATLAB Quick Start : Part I 就到這裏吧!
參考文獻:
[1]The MathWorks, Inc. MATLAB® Primer . 2015(24) : 2-31.