初學數模-MATLAB Quick Start! Part I

    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.

相關文章
相關標籤/搜索