Matlab 進階

一、小技巧

清除命令行窗口中的所有文本
clc

清除工作區的所有變量
clear

快速註釋
Ctrl + R

快速取消註釋
Ctrl + T

矩陣的四則運算 與 矩陣元素的四則運算
+ - * /.+ .- .* ./

Matlab 2016 版本沒有雙引號的用法

二、函數用法

disp 函數 和 input 函數(輸入、輸出)

a = [1 2 3]
disp(a)

輸出:1 2 3

A = input('請輸入A:')

輸出:請輸入A:

strcat 函數(合併字符串)

三種方法
strcat('字符串1','字符串2') 
['字符串1'  '字符串2']
['字符串1','字符串2']

輸出:字符串1字符串2

num2str 函數(將數字轉換爲字符串)

c = 100
num2str(c)

輸出:100

str2num 函數(將字符串轉爲數字)

c = '100'
str2num(c)

輸出:100

sum 函數(求和)

(1) 如果是向量(無論是行向量還是列向量),都是直接求和
E = [1,2,3]
E = [1;2;3]
sum(E)

(2) 如果是矩陣,則需要根據行和列的方向作區分
E = [1,2;
	 3,4;
	 5,6]
	 
按列求和(得到一個行向量)
a = sum(E)
a = sum(E,1)

按行求和(得到一個列向量)
a = sum(E,2)

對整個矩陣求和
a = sum(sum(E))
a = sum(E(:))

prod 函數(求積)

(1) 如果是向量(無論是行向量還是列向量),都是直接求積
E = [1,2,3]
E = [1;2;3]
prod(E)

(2) 如果是矩陣,則需要根據行和列的方向作區分
E = [1,2;
	 3,4;
	 5,6]
	 
按列求積(得到一個行向量)
a = prod(E)
a = prod(E,1)

按行求積(得到一個列向量)
a = prod(E,2)

對整個矩陣求積
a = prod(prod(E))
a = prod(E(:))

max 函數(求最大值)

(1) 如果是向量(無論是行向量還是列向量),都是直接求最大值
E = [1,2,3]
E = [1;2;3]
max(E)

(2) 如果是矩陣,是按列求最大值
E = [1,2,3;
	 4,5,6]
	 
max(E)
輸出:4 5 6

size 函數(求長度)

A = [1,2,3;
	 4,5,6]

% 返回一個行向量,第一個元素是矩陣的行數,第二個元素是矩陣的列數

[r,c] = size(A)
輸出:  r = 2
	   c = 3

% 將矩陣A的行數返回到第一個變量 r,將矩陣的列數返回到第二個變量 c

r = size(A,1)  % 返回行數
c = size(A,2)  % 返回列數

repmat 函數(複製)

A = [1,2,3;
	 4,5,6]

% 將矩陣A複製m×n塊,即把A作爲B的元素,B由m×n個A平鋪而成

B = repmat(A,2,1)  % 複製兩行一列
輸出: 1 2 3
	  4 5 6
	  1 2 3
	  4 5 6

B = repmat(A,2,2)  % 複製兩行兩列
輸出: 1 2 3 1 2 3
	  4 5 6 4 5 6
	  1 2 3 1 2 3
	  4 5 6 4 5 6

find 函數(查找非0元素)

(1) 如果是向量(無論是行向量還是列向量),都是直接返回非0元素的位置
X = [1 0 4 -3 0 0 0 8 6]

ind = find(X)
輸出:1 3 4 8 9

ind = find(X,2)  % 返回前2個非0的元素的位置
輸出:1 3

(2) 如果是一個矩陣(二維,有行和列),則返回列向量或座標
X = [1 -3  0;
	 0  0  8;
	 4  0  6]
	 
ind = find(X)  % 返回列向量
輸出:  1
	   3
	   4
	   8
	   9
	   
[r,c] = find(X)
輸出:
r =  1
     3
     1
     2
     3
     
c =  1
     1
     2
     3
     3


[r,c] = find(X,1)  % 只找第一個非0元素的座標
輸出:
r =  1

c =  1

三、其他操作

提取矩陣中指定位置的元素

A=[1 2 3;
   4 5 6;
   7 8 9];
   	
(1) 取指定行和列的一個元素(輸出的是一個值)

A(2,1)
輸出:4

(2) 取指定的某一行的全部元素(輸出的是一個行向量)

A(2,:)
輸出:4 5 6

(3) 取指定的某一列的全部元素(輸出的是一個列向量)

A(:,3)
輸出:  3
	   6
	   9

(4) 取指定的某些行的全部元素(輸出的是一個矩陣)


A(2:3,:)         % 第二行 到 第三行
輸出: 4 5 6
	  7 8 9

A(2:end,:)       % 第二行 到 最後一行
輸出: 4 5 6
	  7 8 9

(5) 取全部元素(按列拼接的,最終輸出的是一個列向量)

A(:)
輸出:  1
	   2
	   3
	   4
	   5
	   6
	   7
	   8
	   9   

求逆矩陣

A = [1 2 3;
	 2 2 1;
	 2 0 3]
	 
inv(A)
輸出: -0.4286    0.4286    0.2857
       0.2857    0.2143   -0.3571
       0.2857   -0.2857    0.1429

求特徵值和特徵向量

A = [1 2 3;
	 2 2 1;
	 2 0 3]

(1) 求矩陣A的全部特徵值,構成向量E

E = eig(A)
輸出: -1.3166
       5.3166
       2.0000

(2) 求矩陣A的全部特徵值,構成對角陣D,並求A的特徵向量構成V的列向量
(V的每一列都是D中與之相同列的特徵值的特徵向量)

[V,D] = eig(A)      
輸出:
V =   0.8364   -0.6336   -0.2408
     -0.3875   -0.5470   -0.8427
     -0.3875   -0.5470    0.4815



D =  -1.3166         0         0
           0    5.3166         0
           0         0    2.0000

查看矩陣存儲方式

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

A(4)  % 查找元素4的位置
輸出:2

A(8)  % 查找元素8的位置
輸出:6

A(9)  % 查找元素9的位置
輸出:9

說明矩陣是按列存儲的,如下方式存儲
 A = 1
     2
     3
     4
     5
     6
     7
     8
     9 

矩陣與常數的大小判斷運算

X = [1 -3  0;
	 0  0  8;
	 4  0  6]

X > 0
輸出: 1    0    0
 	  0    0    1
      1    0    1

X == 4
輸出: 0    0    0
      0    0    0
      1    0    0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章