Matlab R2017b快速入門

久聞Matlab的大名,可惜一直沒有好好學(xué)學(xué)?,F(xiàn)在正好裝了個最新的版本,就來學(xué)習(xí)一下Matlab,了解一下它的強大的功能。

程序界面

打開Matlab會看到類似的程序界面,上邊是菜單欄,包含了各種工具。左邊是文件視圖,列出了項目中的所有文件。中間是代碼和命令行窗口。右邊則是工作區(qū)窗口,每次在代碼中輸入的變量都會作為工作區(qū)變量保存在工作區(qū)中。


程序界面

數(shù)據(jù)類型

Matlab中其實所有變量都是矩陣,不過如果你只指定了一個值的話,那么它其實就是一個1X1的矩陣。

矩陣和數(shù)組

數(shù)組使用方括號聲明,數(shù)組元素使用空格或者逗號分隔開。這樣的數(shù)組又叫做行矢量。

% 數(shù)組
array1 = [1,2,3,4,5]
array2 = [1 3 5 9 7]

要創(chuàng)建矩陣,使用分號分隔的多行數(shù)據(jù)。

m = [1,2,3; 4,5,6; 7,8,9]

另外還有幾個方法用于創(chuàng)建初始值為0、1、均勻隨機、正態(tài)分布隨機的矩陣,它們的參數(shù)分別是行和列的個數(shù)。

% 創(chuàng)建矩陣
m0 = zeros(3,3)
m1 = ones(3,3)
m2 = rand(3,3)
m3 = randn(3,3)

如果要轉(zhuǎn)置矩陣,使用單引號。

% 轉(zhuǎn)置矩陣
m = m'

兩個某一維度相同的矩陣可以串聯(lián),逗號分隔為水平串聯(lián),分號分隔為垂直串聯(lián)。下面[m,n]結(jié)果是3X6的矩陣,而[m;n]是6X3的矩陣。

% 水平串聯(lián)和垂直串聯(lián)
n = zeros(3,3)
[m,n]
[m;n]

矩陣與一個數(shù)運算,結(jié)果會應(yīng)用到矩陣所有元素上。如果矩陣和矩陣運算,結(jié)果遵循矩陣計算法則。如果希望將兩個矩陣對應(yīng)元素進行計算,需要使用.運算符的語法。

% 矩陣運算
a
a*3
a+a
a*a
a.*a

結(jié)果如下。

a =
     1     2
     3     4

ans =
     3     6
     9    12

ans =
     2     4
     6     8

ans =
     7    10
    15    22

ans =
     1     4
     9    16

索引運算

有時候可能需要對數(shù)組或矩陣中某些值進行計算,這時候可以利用索引運算進行。如果嘗試訪問矩陣中不存在的元素,會導(dǎo)致錯誤。不過如果是對不存在的元素賦值,Matlab會自動擴展矩陣,新創(chuàng)建的元素都為0.

a = [1,2,3; 4,5,6; 7,7,8]

>> a(1,1)
ans =
     1

>> a(4,4)=2
a =
     1     2     3     0
     4     5     6     0
     7     7     8     0
     0     0     0     2

如果需要訪問多行或多列,使用冒號運算符。下面分別獲取了矩陣2-4行與1-3列的元素,以及第三行的所有元素。

>> a(2:4,1:3)
ans =
     4     5     6
     7     7     8
     0     0     0

>> a(3,:)
ans =
     7     7     8     0

冒號運算符還可以用于創(chuàng)建等距離矢量,語法是[起始:步長:結(jié)束],其中步長可以省略,默認是1。

m = [0:10:100]

m =
     0    10    20    30    40    50    60    70    80    90   100

矩陣計算

Matlab的英文全名即Matrix Laboratory(矩陣實驗室),可見矩陣在Matlab中的重要地位。前面已經(jīng)介紹了一些矩陣的知識,下面繼續(xù)介紹一些矩陣的方法。

首先是矩陣求和,默認情況下對于矩陣執(zhí)行sum函數(shù)會得到各列的和。

m = [1,2,3; 4,5,6; 7,8,9]

m =
     1     2     3
     4     5     6
     7     8     9
% 矩陣求和
sum(m)

ans =
    12    15    18

如果希望得到各行的和,需要在sum函數(shù)上指定第二個參數(shù)。

sum(m,2)

ans =
     6
    15
    24

如果要獲取對角線的和,可以使用diag函數(shù)先得到對角線矢量。

diag(m)

ans =
     1
     5
     9

如果要得到反對角線,Matlab沒有提供直接方法。不過我們可以利用fliplr函數(shù)先對矩陣進行左右翻轉(zhuǎn),然后再求對角線。

diag(fliplr(m))

ans =
     3
     5
     7

有一種特殊的矩陣叫做幻方,這種矩陣各行、各列、以及兩條對角線的和都是相同的。Matlab內(nèi)置了函數(shù)magic,可以生成指定維度的幻方。

% 幻方
disp('----------幻方------------')
m = magic(3)
disp('各行的和:')
sum(m,2)
disp('各列的和:')
sum(m)
disp('對角線的和:')
sum(diag(m))
sum(diag(fliplr(m)))

文本和字符

字符串使用單引號包括,如果字符串內(nèi)部也有單引號,使用兩個連續(xù)的單引號。

% 文本和字符
text = 'This is a ''special'' date'

text =
    'This is a 'special' date'

如果要查看變量類型的話,可以使用whos命令。

% 查看變量類型
whos text

  Name      Size            Bytes  Class    Attributes
  text      1x24               48  char  

連接字符串使用方括號將要連接的字符串括在一起。

% 連接字符串
hello = 'How are you ?'
[text, '. ', hello]

ans =
    'This is a 'special' date. How are you ?'

字符和數(shù)字之間也可以互相轉(zhuǎn)換。

% 字符與數(shù)字轉(zhuǎn)換
c = '1'
n = 1
num2str(n)
str2num(c)

編程

條件語句

下面是Matlab中if語句的例子,生成一個隨機數(shù)并判斷在哪個區(qū)間中。

% 條件語句
N = 0.5
n = rand
if n < N
    disp('n < .5')
elseif n < .3
    disp('n <.3')
else
    disp('other')
end

然后是switch語句的例子。

% switch語句
n = 3
switch(n)
    case {1,2}
        disp('n = 1 or 2')
    case {3,4,5}
        disp('n is 3,4,5')
    otherwise
        disp('other case')
end

循環(huán)語句

首先是for循環(huán)。

% for循環(huán)
for i = 1:5
    disp(i)
end

然后是while循環(huán)。

% while循環(huán)
n = 1
while n < 10
    n = n + 1
end

格式化

format函數(shù)可以控制數(shù)據(jù)如何在Matlab中顯示。

% 格式化
a = [1/3 .1111]

format short
a
format long
a
format bank 
a
format short e
a
format rat
a
format hex
a

a =
    0.3333    0.1111

a =
   0.333333333333333   0.111100000000000

a =
          0.33          0.11

a =
   3.3333e-01   1.1110e-01

a =
       1/3         1111/10000 

a =
   3fd5555555555555   3fbc710cb295e9e2

每行Matlab代碼在執(zhí)行的時候都會在命令窗口中顯示輸出,在大型程序中會導(dǎo)致代碼輸出很亂。我們可以通過在代碼后面添加分號來提示Matlab不要輸出。

% 取消輸出
longMatrix = [0:1000];

如果代碼太長,可以將代碼分成幾行來編寫,在需要分行的代碼末尾添加三個點號即可。

% 長語句
longStatement = 1+2+3+4 ...
    +5+6+7+8+9

繪圖

二維圖

繪制二維圖很簡單,只要提供x和y的數(shù)值即可。下面是繪制-2π到2π的正弦圖像的例子。

% 二維圖
x = [-2*pi:pi/100:2*pi]
y = sin(x)
plot(x,y)

會彈出下圖所示的圖形窗口。

正弦圖像

為提高可讀性還可以添加一些注釋。

% 添加注釋
xlabel('x')
ylabel('sin(x)')
title('-2π到2π間的正弦圖像')
圖形注釋

每次調(diào)用plot函數(shù)都會重新繪圖,如果想在已有的圖表上畫新圖形,需要使用hold on命令。在調(diào)用hold off命令之前,所有圖表都會添加到已有的圖形上。plot函數(shù)的第三個參數(shù)可以指定畫圖線條的顏色和形狀,顏色使用RGB等字母指定,形狀會使用所給定的字符繪制線條。

% 圖像都畫在一張圖上
hold on 

y = cos(x)
plot(x,y,'g--')
綠色虛線繪圖

三維圖

三維圖形的繪制也是類似的,首先用meshgrid函數(shù)生成一個區(qū)域的點集,然后指定z與xy的關(guān)系。繪制三維圖有兩個函數(shù),surf函數(shù)會用顏色填充三維圖形的面。而mesh函數(shù)只會填充線條。這里為了方便顯示使用subplot函數(shù)繪制子圖,該函數(shù)前兩個參數(shù)指定子圖的行數(shù)和列數(shù),第三個參數(shù)指定要畫的子圖順序。調(diào)用該函數(shù)之后,可以調(diào)用實際繪圖函數(shù)來繪圖。

% -------------三維圖-------------

% 生成x,y點集
[x,y] = meshgrid(-10:.5:10)
% 指定函數(shù)
z = x.^2 + y

% 繪制三維圖
subplot(2,1,1)
surf(x,y,z)
title('surf繪圖')

subplot(2,1,2)
mesh(x,y,z)
title('mesh繪圖')

上面的代碼會顯示類似下面的圖像。

三維圖形

幫助

Matlab有比較完善的中文幫助,按F1即可打開幫助。

幫助文檔

如果想了解某個App的功能,可以直接在命令窗口中輸入help appname來獲得相關(guān)函數(shù)信息。

>> help stats
  Statistics and Machine Learning Toolbox
  Version 11.2 (R2017b) 24-Jul-2017
 
  Distributions.
   Parameter estimation.
    betafit     - Beta parameter estimation.
    binofit     - Binomial parameter estimation.
    distributionFitter - Distribution fitting app.
    evfit       - Extreme value parameter estimation.
    expfit      - Exponential parameter estimation.
...

如果希望了解某個函數(shù)的詳細信息,可以用doc 函數(shù)名來查閱文檔,例如doc max就會列出max函數(shù)的詳細文檔。

函數(shù)文檔

以上就是Matlab的一點知識了,希望可以讓沒有使用過Matlab的同學(xué)對它有一個大致了解。當(dāng)然這里列出的功能僅僅是Matlab的冰山一角。在安裝Matlab的時候我們可以看到它有非常豐富的組件,每一個組件都包含了專業(yè)領(lǐng)域大量的函數(shù)和功能,只有深入了解之后才會體會到Matlab的強大之處。有興趣的同學(xué)可以深入了解。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 顯示中文幫助的方法 預(yù)設(shè)→常規(guī)→幫助→在mathworks.com網(wǎng)站上(需要Internet連接)→語言(簡體中...
    VeyronC閱讀 2,600評論 0 34
  • 來源:NumPy Tutorial - TutorialsPoint 譯者:飛龍 協(xié)議:CC BY-NC-SA 4...
    布客飛龍閱讀 33,516評論 6 97
  • MATLAB基本數(shù)據(jù)類型 雙精度/單精度/整形 數(shù)據(jù)的范圍 務(wù)必注意溢出的問題。 函數(shù) 類型檢查 class is...
    hainingwyx閱讀 5,965評論 0 6
  • 看了標(biāo)題,很多人都會迷茫,這篇是什么,這是一篇游記,對,你沒有聽錯,這是一篇游記、游記、記,重要的事情說三遍。...
    阿Joyo閱讀 460評論 2 1
  • 飲盡這杯濁酒 我將告別這里 那里 不再尋找你的身影 踏上七月的霞光 信馬隨風(fēng)流浪 北方的麥地打出一口深井 只是苦澀...
    帶路閱讀 270評論 1 3

友情鏈接更多精彩內(nèi)容