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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章