MatLab基本知識學習 詳細!


文章目錄

MatLab基本知識學習

概述:輸出表示命令執行后的結果,不能簡單的理解輸出就是一定要輸出一個數 ; 此文所有的輸入代表在命令行窗口輸入,輸出表示在命令行窗口輸出,或者在工作區顯示相關的變量的名稱以及值

1.who 命令

在命令窗口輸入:‘who’
輸出:當前所使用的所有的變量的名字

2.whos命令

在命令窗口輸入:‘whos’
輸出:變量的詳細信息,有變量名,大小,屬性等信息

3.clear 變量名

在命令窗口輸入:clear x
輸出:將工作區的變量的名字以及相關的值刪除
輸入:clear
輸出:清除工作區的所有變量,clear后面不加參數

4.clc命令

在命令窗口輸入:clc
輸出:將命令行窗口的清空

5.clear命令

在命令窗口輸入:clear
輸出:將工作區的所有變量清除

6.help 命令(使用的很多)

在命令窗口輸入:help xlabel
輸出:打開函數xlabel函數的幫助文檔

7.quit 或者 exit

在命令窗口輸入:exit
輸出:退出MatLab程序
在命令窗口輸入:quit
輸出:退出MatLab程序

8.pwd 命令

在命令窗口輸入:pwd
輸出:顯示當前的程序運行的絕對路徑

9.roots() 函數

用於解決方程中的問題:
示例:
在這里插入圖片描述

10.inv()函數

概述:inv函數主要作用是求解矩陣的逆矩陣
在命令窗口輸入:a = [1 2;3 4]; inv(a)
輸出:在這里插入圖片描述

11.plot()函數

簡介:用來畫圖的命令,給他一個有關x的數組和一個有關y的數組plot(x,y),就可以畫出相應的圖像
示例:
x = [1 2 3 4]
y = [1 2 3 4]
plot(x,y)

12.數組的分類

一維數組:也叫做向量(行向量,列向量)
建立矩陣:a = [1 2; 3 4]
封號代表換下一行,相當於
a =
[ 1 2
3 4]

13. ':'的使用

簡述:MatLab ':'代表索引,索引就是尋找的意思
示例1:
輸入:c = 1 : 2 :10
輸出:c = 1 3 5 7 9
含義:從1到10,每相隔兩個數,記錄下來,賦值給變量c

示例2:
輸入:a = [ 1 2 3 4 5 6]
輸入:a( : )
輸出:1 2 3 4 5 6
含義:將變量a 中的所有值都找出來,顯示在屏幕上。

14. linspace(x1,x2,n)

含義:生成 n 個從x1 到 x2 之間以(x2 - x1)/(n - 1)為間隔的數。
示例:linspace(1,2,5)
輸出:生成 5 個數,每個數的間隔是(2 - 1)/(5 - 1)
輸出:1 1.25 1.5 1.75 2

15.MatLab’;'的使用

1.用在矩陣內部,表示分割行
2.使用在MatLab的代碼的后面,表示執行代碼,但是不輸出結果。

16.MatLab的索引與C++有點不一致,索引是從 1 開始的,需要注意一下。

17.zeros()函數

在命令窗口輸入:a = zeros(2,2)
輸出:生成兩行兩列的 0 矩陣。

18.end的使用

概述:end主要使用在數組的索引中,表示找到數組中的最后一個元素,在不同的語境下可能表示,最后一行,最后一列,最后一層。
示例1.:
輸入:a = [ 1 2 3 4]
輸入:a(end)
輸出:4

示例2:
輸入:a = [ 1 2;3 4]
輸入:a(end,:)
輸出:3 4
含義:輸出最后一行的所有列

19.size()函數

示例1
輸入:a = [ 1 2;3 4]
輸入:size(a)
輸出:2 2
含義:統計一下數組有幾行幾列,示例中有 2 行 2 列

20.sub2ind()函數

簡介:雙下標轉換為單下標,本人的使用率很低,了解一下

21.MatLab有限列索引

示例1
輸入:a = [1 2 3;4 5 6;7 8 9]
輸入:a(4)
輸出:2
含義:從從上到下,左到右,依次給矩陣中的元素排序,按照列優先的順序進行

22.MatLab 不等於的表示

示例1
輸入:a ~=b
含義:a不等於b
注意:’!='是C++語法,需要注意.

23.max()函數

示例1
輸入:a = [1 2 3;4 5 6]
輸出:4 5 6
含義:輸出每一列的最大值,並不是矩陣的最大值,如果需要求的矩陣的最小值,需要使用max(max(a))

24.字符串

簡介:MatLab使用 ’ ’ 兩個單引號,來表示一個字符串

25.空數組

使用全下標,不能刪除單個元素,但是使用單下標,正常運行
示例1:a(1,2) = []
程序會報錯

示例2:a(1) = [] %運行結果可以刪除a(1)元素

26.元胞數組

概述:一種特殊的數據類型,在數組中用於從存放不同類型的數據,每個單元相當於一個盒子,“盒子中存放各種類型不同的MatLab數據”

27.hold命令

概述:在一個函數中多次調用plot命令來畫圖,如果不加hold on ,那么圖層就會被相互覆蓋掉,需要注意;對應的hold off,結束hold on 命令,之后繪制的圖形不保留以前的坐標格式,以及曲線。
示例1
hold on
plot();
plot();
plot();
hold off

28.MatLab注釋

MatLab 使用 百分號 % 進行注釋,和C++使用‘//’注釋不同

29.格網分格線的繪制

示例1:
grid on
grid off

30.圖像文件的讀寫與圖像的顯示

imread()指令

概述:讀取圖像文件(BMP GIF PNG JPEJ JPG)
示例:imread(‘123.jpg’)

imshow()指令

概述:顯示圖像
示例:imshow(‘123.jpg’)

imwrite()指令

概述:保存圖像
示例:imwrite(lighter,‘123.jpg’)
說明:lighter,是自己處理過的一個圖片的名稱
第一個參數,要存放的圖片的變量,第二個參數,自己給保存的圖片的起的名字
區別:xlsread()函數 與 xlswrite()函數

rgb2gray()

概述:將彩色圖像轉換為灰度圖像
示例:rgb2gray(‘123.jpg’)
說明:'123.jpg’這個文件需要在你的命令運行的路徑下,否則MatLab,會報錯找不到文件

31.continue break

概述:使用在循環當中,控制循環結束的語句
continue :退出本次循環
break:退出循環

32.特殊矩陣

1.zeros:產生全部為0的矩陣
2.ones:產生全1的矩陣
3.eye:產生單位矩陣
單位矩陣:對角線元素是1,其余元素都是0的矩陣
4.randn:產生均值為0,方差為1的標准正態分布隨機矩陣
5.rand:產生(0,1)之間的均勻分布的偽隨機數
6.diag:構造對角矩陣
示例:diag([ 1 2 3])

33. ( .*, ./ , / , ) 的用法

.* 和 ./ 表示矩陣的對應的元素相乘或者相除
/:右除。a/b表示矩陣a乘以矩陣b的逆。
\:左除。a\b表示矩陣a的逆乘以b。

34.find()函數的使用

概括:find函數可以找出數組中滿足條件的數
示例:
輸入:a = [1 2 3;4 5 6]
輸入:a = [4 5 6;7 8 9]
輸入:find(a < b)
輸出:1 2 3 4 5 6
含義:
1.在MatLab調用find函數之前,首先對(a < b)進行判斷,判斷的邏輯是,對應元素相互比較,如果是真,返回 1 ,如果是假,返回 0.所以在(a < b)判斷后,會輸出一個邏輯數組[1 1 1 ;1 1 1 ]。a 中對應的元素都小於對應的 b 的元素。
2.MatLab調用find函數,並且以列向量的形式返回對應元素的下標。(也就是上一步的生成的邏輯數組中值為 1 的元素的下標)
注意:兩個數組之間使用find 函數,返回的是下標,不是元素的值

35.MatLab取整函數:round(),fix(),floor()

以很多人喜歡的 5.56 為例 7.62 的例子也挺好~~
1.round()
簡介:四舍五入取整
示例:
輸入:round(5.56)
輸出:6
輸入:round(-5.56)
輸出:-6

2.fix()
簡介:向靠近零方向取整
示例:
輸入:fix(5.56)
輸出:5
輸入:fix(-5.56)
輸出:-5

3.floor()
簡介:向負無窮方向取整
示例:
輸入:floor(5.56)
輸出:5
輸入:floor(-5.56)
輸出:-6

36.save()函數和load(函數)

簡介:這兩個函數save()是保存當前在工作區的所有的變量以及變量的值,執行后會在運行目錄下生成文件名.mat, load() 函數是將以前使用save()函數存儲的 .mat文件加載到工作區中
示例save:
輸入:save(‘test’)
輸出:在運行目錄生成一個 test.mat 文件
注意:文件名 test ,必須在兩個單引號內

示例load:
輸入:load(‘test’)
輸出:在MatLab的工作區將會顯示加載進來的 test.mat文件 ,顯示的是變量以及變量的值

37.MatLab中使用plot()畫圖時,線條或者符號的顏色屬性的簡寫

y:黃色;k:黑色;w:白色;
b:藍色;g:綠色;r:紅色;
c:亮青色 cran;m:錳紫色 manganese-purple;
簡單記憶:對應的顏色的英文字母的首字母的簡寫;
對於黑色:本人的理解是藍色的 b 和 black沖突了,然后給黑色 用 k 來代替

38.數組之間的 &, ./ ,== 符號的辨析

示例1:
輸入:A = [0 0 6;1 3 0]
輸入:B = [1 4 12 ;1 3 0]
輸入:A & B
輸出:[0 0 1 ; 1 1 0]
含義:數組 A 與 B 進行邏輯 & 運算,運算的結果當然是一個邏輯矩陣,兩個數組中的對應的元素進行邏輯 & 運算,可以理解為對應元素的乘法 ,結果不是 0 ,返回 1 ,結果是 0 ,返回0

示例2:
輸入:A ./ B
輸出:[0 0 0.5 ; 1 1 NaN]
含義:兩個數組的元素對應相除,A 數組中的元素充當被除數 ,B 數組中的元素充當除數 ,所得到的商,如果非 0 ,返回 1 ;如果是 0 , 返回0;如果除數等於 0 ,大家都知道 0 是不可以當除數的,所以得到的數就是NaN

示例3:
輸入:A == B
輸出:[ 0 0 0 ;1 1 1]
含義:對兩個數組進行邏輯運算,如果對應元素的值相等,返回 1 ,如果對應元素的值不相等,返回 0

39.一個 & 與兩個 &&的區別

1.&
含義:假設有兩個數組 A , B
(A & B) 表示先判斷 A 的邏輯值 (簡單理解:就是判斷數組是不是空的),然后判斷 B 的邏輯值,然后對 A B兩個數組進行邏輯運算。對應位置的元素進行邏輯與(&)運算,結果非 0 ,返回 1 ;結果為 0 ,返回 0 ;

2.&&
含義:假設有兩個數組 A , B
(A && B)表示先對 A 數組進行邏輯判斷,如果 A 數組的邏輯為假,就不對 B 進行邏輯判斷。說人話就是,就是先判斷 A 數組中是否都是 0 元素, 0 代表假,在邏輯判斷中,如果 A 中都是 0 的話,沒必要對 B 進行邏輯判斷,因為知道 0 矩陣與任何矩陣的與(&)運算一定是一個 0 矩陣,上面提到過,與運算可以簡單理解成對應元素相乘。
同樣,A B 也可能不是矩陣,是兩種不同的條件的邏輯與(&)運算,理解是一樣的。

舉例:(老師來了收作業,我沒寫要被批評)在這個語境中,
有兩個條件,1.老師來了 2. 收作業; 和一個結果:我沒寫要被批評
對於(&)當老師來了 和 收作業 兩個都為真時,進行邏輯與運算,結果就是:(我沒寫要被批評)。
對於(&&)先判斷第一個條件,老師來了沒?如果沒來,下面就不用判斷了,結果為假那就是:(我沒有受到老師的批評)

40.MatLab 的輸入輸出

1.輸入:input()函數 C++的 cin
2.輸出: fprintf() 函數 C++的cout

41.一道題目關於邏輯運算

在這里插入圖片描述
解析:在圖片中的題目計算過程如下:
1.進行(a > b)的邏輯運算,a數組中的對應元素,如果大於b數組中的對應元素,返回 1 ;否則返回 0 ;
2.a(a > b)相當於對數組a中的元素的索引,當然是對上一步的邏輯運算為 1 的元素的索引,看到了邏輯值為 1 的是:第二個元素 “3” 和第三個元素 “2”(MatLab按照列有優先順序)
3.以列向量的形式返回結果。

42.subplot()函數

簡介:subplot()函數的主要用途是在一個圖窗中,可以畫出幾種不同的圖。效果如下圖:在這里插入圖片描述
示例:subplot(m,n,num)
參數介紹
m,n:代表在這一個圖窗中,畫的圖有幾行幾列,上圖右兩行兩列的圖,所以m,n代表的數字是2 ,2

num:表示圖窗在這兩行兩列的小圖中的位置,排序從左到右,從上到下,
左上的圖是subplot(2,2,1)
右上的圖是subplot(2,2,2)
左下的圖是subplot(2,2,3)

43.MatLab的 NaN 和 Inf

簡述:在使用除法的時候,我們都知道除數不能為 0 ,但是在數組中的計算中,難免會出現 0 元素當作除數。在MatLab中,是這樣處理除數為 0 的情況的。

1.被除數和除數都是 0
示例:
輸入: 0 / 0
輸出:NaN
含義:Not a Number 的縮寫,不是一個數

2.被除數不為 0 ,除數是 0
示例:
輸入:12 / 0
輸出:Inf
含義:infinite的縮寫,無窮大的意思

44.MatLab中的單引號和雙引號的使用

1.單引號
(1)在矩陣的轉置會遇到,在矩陣名稱后面加一個 ‘ 符號即可
(2)在某些特定的函數中會遇到,比如前面介紹的Imread(‘’)函數,在讀取文件時,需要加上單引號
2.雙引號
(1)在特定的函數中使用,比如想打印相關的漢字,顯示在屏幕上,
fprintf(“Hello World!”)
fprintf(‘Hello World’)也是可以運行的
總結:在學習的時候記住相關的格式就行,不必深究,可以理解成約定俗成吧

45.簡單總結一下find()函數,數組索引

1.find()函數

返回的是單下標,不是雙下標,也不是元素的值,需要特別注意,並且返回的下標以列向量顯示,不是行向量

2.數組索引

返回值以列向量的形式返回(顯示在命令行窗口),並且列優先順序,簡單說就是優先顯示第一列的數據,然后顯示第二列的數據,以此類推

未完,待續…
覺得有用點個贊吧~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM