马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本篇介绍我在南农matlab课程上的所学,我对老师ppt上的内容重新进行了整理而且给出代码案例。重要内容在矩阵。如果真的想学matlab,我不认为有任何文档可以或许超过官方文档,请移步至官网,本篇说真话只是写出来给自己和学弟学妹作期末复习用的,没有任何学习价值。还是那句话,真想学明白,请看官方文档。
matlab默认显示运算结果,但在赋值语句后加分号只实行赋值操作
数值
双精度与单精度:double, single
符号整型与无符号整型:int8, unit8
实型与复型:real, imag
结构
structure
元胞
cell
% 注释
format
format 只影响输特别式不影响数据存储
代码寄义format 显示小数点后4位format long小数点后15位format short e5位有效数字科学计数法format long e16位有效数字科学计数法format rat近似有理数- % 小数点后4位
- >> format
- >> pi
- ans =
- 3.1416
- % 小数点后15位
- >> format long
- >> pi
- ans =
- 3.141592653589793
- % 5位有效数字的科学计数法
- >> format short e
- >> pi
- ans =
- 3.1416e+00
- % 16位有效数字的科学计数法
- >> format long e
- >> pi
- ans =
- 3.141592653589793e+00
- % 近似有理数
- >> format rat
- >> pi
- ans =
- 355/113
复制代码 预界说变量
变量名体现数值ans 缺省变量名pi 圆周率eps浮点运算的相对精度inf 正无穷NaN不定值0/0realmax/realmin最大/最小的浮点数i,j虚数单位nargin,nargout所用函数的输入/输出变量数量- >> 1
- ans =
- 1
- >> pi
- ans =
- 3.1416
- >> eps
- ans =
- 2.2204e-16
- >> inf
- ans =
- Inf
- >> NaN
- ans =
- NaN
- >> realmax
- ans =
- 1.7977e+308
- >> realmin
- ans =
- 2.2251e-308
- >> i
- ans =
- 0.0000 + 1.0000i
- >> j
- ans =
- 0.0000 + 1.0000i
复制代码 内存变量的管理
whos, who显示workspace中的变量名,clear删除workspace中的全部变量
- >> a=1,b=2
- a =
- 1
- b =
- 2
- >> who
- 您的变量为:
- a b
- >> whos
- Name Size Bytes Class Attributes
- a 1x1 8 double
- b 1x1 8 double
- >> clear
- >> whos
- >>
复制代码 逻辑运算与关系运算
逻辑运算
运算符寄义&与``~非 关系运算
运算符寄义>大于<小于>=大于便是<=小于便是==便是~=未便是 序列
- % 从1开始到4结束每隔0.5取一个
- >> 1:0.5:4
- ans =
- 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000
- % 从1开始到2结束一共有10个等差的数
- >> linspace(1,2,10)
- ans =
- 1.0000 1.1111 1.2222 1.3333 1.4444 1.5556 1.6667 1.7778 1.8889 2.0000
- % 从10^1开始到10^2结束一共有10个等比的数
- >> logspace(1,2,10)
- ans =
- 10.0000 12.9155 16.6810 21.5443 27.8256 35.9381 46.4159 59.9484 77.4264 100.0000
-
复制代码 矩阵
matlab中的矩阵是按列存放的,也就是说你如果用序列创建矩阵,是一列一列依次填满的。
创建矩阵
方括号括起来体现矩阵,分号体现换行,同行元素间以空格或逗号隔开,矩阵元素可以是运算表达式
- >> mat = [1 2 3 ; 4 5 6]
- mat =
- 1 2 3
- 4 5 6
复制代码 特殊矩阵的创建
函数作用zeors(m,n)产生 m × n m\times n m×n零矩阵,方阵环境时可以省略第二个参数zeros(size(A))产生与矩阵A同样巨细的零矩阵eye(m,n)构建单位矩阵ones(m,n)构建全1矩阵randi([a, b], m, n)元素在[a, b]之间的 m × n m\times n m×n随机矩阵- >> zeros(3,4)
- ans =
- 0 0 0 0
- 0 0 0 0
- 0 0 0 0
- >> eye(3,4)
- ans =
- 1 0 0 0
- 0 1 0 0
- 0 0 1 0
- >> ones(3,4)
- ans =
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- >> randi([10,50], 5 ,5)
- ans =
- 47 21 49 27 11
- 15 32 49 47 44
- 47 49 29 42 48
- 35 49 42 49 37
- 13 16 15 36 41
复制代码 利用 M 文件或 TXT 文件建立矩阵
可以通过 .m 脚本文件或 .txt 文本文件创建较大、复杂的矩阵。这样做的好处是便于维护、复用或从外部导入数据。
使用 .m 文件创建矩阵
- 打开 MATLAB 自带的 Editor 或使用任意文本编辑器。
- 输入如下内容(界说一个矩阵 mymat):
- % 文件名:mymatrix.m
- mymat = [
- 1, 2, 3;
- 4, 5, 6;
- 7, 8, 9
- ];
复制代码 - 将文件保存为 mymatrix.m,并确保保存在 MATLAB 当前工作目次中。
- >> mymatrix
- mymat =
- 1 2 3
- 4 5 6
- 7 8 9
复制代码 使用 .txt 文件读取纯数据矩阵
实用于数据文件中只包罗纯数字(不含变量名)。
- 创建一个名为 mymatrix.txt 的文本文件,内容如下:
- 在 MATLAB 中读取该文件内容为矩阵:
- mymat = load('mymatrix.txt');
复制代码 或使用更通用的函数:
- mymat = readmatrix('mymatrix.txt');
复制代码 矩阵切片
MATLAB 中的矩阵切片(索引)操作
矩阵的切片操作使用括号 ( , ) 体现,其中:
- 前一部分体现 行的索引;
- 后一部分体现 列的索引;
- 可以使用数字、向量、冒号 :、关键字 end 等方式指定位置。
基本语法
- A(i, j) % 取第 i 行第 j 列的元素
- A(i, :) % 取第 i 行的所有列
- A(:, j) % 取第 j 列的所有行
- A(m:n, p:q) % 取第 m 到 n 行、第 p 到 q 列的子矩阵
- A([1 3], [2 4]) % 取第 1、3 行 和第 2、4 列交叉形成的子矩阵
- A(end, :) % 取最后一行的所有列
- A(:, end-1:end) % 取最后两列的所有行
复制代码- >> A = [1 2 3; 4 5 6; 7 8 9]
- A =
- 1 2 3
- 4 5 6
- 7 8 9
- >> A(2, 3)
- ans =
- 6
- >> A(1, :)
- ans =
- 1 2 3
- >> A(:, 2)
- ans =
- 2
- 5
- 8
- >> A(1:2, 2:3)
- ans =
- 2 3
- 5 6
- >> A([1 3], [1 3])
- ans =
- 1 3
- 7 9
- >>
- >> A(end, :)
- ans =
- 7 8 9
- >> A(:, end-1:end)
- ans =
- 2 3
- 5 6
- 8 9
复制代码 矩阵运算
数的运算是矩阵运算的特例,以是一并包罗在其中。
1. 基础算术运算符
运算符寄义阐明+加法元素逐项相加,要求维度一致-减法元素逐项相减,要求维度一致*矩阵乘法矩阵内积规则,A的列= B的行/右除A/B ≡ A * inv(B)\左除A\B ≡ inv(A) * B^矩阵幂A^n 为 n 次矩阵乘法- >> A = [1 2; 3 4], B = [5 6; 7 8]
- A =
- 1 2
- 3 4
- B =
- 5 6
- 7 8
- >> A + B
- ans =
- 6 8
- 10 12
- >> A - B
- ans =
- -4 -4
- -4 -4
- >> A * B
- ans =
- 19 22
- 43 50
- >> A / B
- ans =
- 3.0000 -2.0000
- 2.0000 -1.0000
- >> A / B * B
- ans =
- 1 2
- 3 4
- >> A \ B
- ans =
- -3 -4
- 4 5
- >> A * (A \ B)
- ans =
- 5 6
- 7 8
- >> A ^ 2
- ans =
- 7 10
- 15 22
复制代码 2. 点运算符(逐元素操作)
运算符寄义.*元素乘法./元素右除.\元素左除.^元素幂- >> A = [1 2; 3 4], B = [5 6; 7 8]
- A =
- 1 2
- 3 4
- B =
- 5 6
- 7 8
- >> A .* B
- ans =
- 5 12
- 21 32
- >> A ./ B
- ans =
- 0.2000 0.3333
- 0.4286 0.5000
- >> A .\ B
- ans =
- 5.0000 3.0000
- 2.3333 2.0000
- >> A .^ 2
- ans =
- 1 4
- 9 16
复制代码 3. 常用数学函数
下述函数若作用于矩阵则是对每一元素进行的。
函数阐明sqrt(x)平方根pow2(x)2的幂log(x)自然对数log2(x)2为底的对数log10(x)10为底的对数exp(x)e为底的指数sign(x)符号函数mod(x,y)余数,x为负数时是向负数的余数rem(x,y)余数,x为负数时是向正数的余数round(x)四舍五入floor(x)向下取整ceil(x)向上取整fix(x)向 0 方向取整conj(x)复数共轭real(x)复数实部imag(x)复数虚部abs(x)模angle(x)相角4. 矩阵变更函数
函数阐明transpose(A) 或 A.'非共轭转置fliplr(A)左右翻转flipud(A)上下翻转flipdim(A,1)将矩阵按第一个维度进行翻转rot90(A)旋转90度diag(A)对角矩阵rref(A)最简行蹊径形矩阵tril(A)下三角矩阵triu(A)上三角矩阵reshape(A,m,n)将矩阵A重新排成 m × n m\times n m×n的矩阵- >> A = [1 2; 3 4]
- A =
- 1 2
- 3 4
- >> transpose(A)
- ans =
- 1 3
- 2 4
- >> A.'
- ans =
- 1 3
- 2 4
- >> fliplr(A)
- ans =
- 2 1
- 4 3
- >> flipud(A)
- ans =
- 3 4
- 1 2
- >> flipdim(A, 1)
- ans =
- 3 4
- 1 2
- >> flipdim(A, 2)
- ans =
- 2 1
- 4 3
- >> rot90(A)
- ans =
- 2 4
- 1 3
- >> diag(A)
- ans =
- 1
- 4
- >> rref(A)
- ans =
- 1 0
- 0 1
- >> tril(A)
- ans =
- 1 0
- 3 4
- >> triu(A)
- ans =
- 1 2
- 0 4
- >> reshape(A, 1, 4)
- ans =
- 1 3 2 4
复制代码 5. 矩阵运算函数
函数寄义det(A)行列式inv(A)逆矩阵rank(A)矩阵秩trace(A)对角线元素之和norm(A)矩阵范数cond(A)矩阵条件数[V,D]=eig(A)矩阵的特性值分解,V体现特性向量,D体现特性值[Q,R]=qr(A)矩阵的QR分解[L,U]=lu(A)矩阵的LU分解- >> det([1 2; 3 4])
- ans =
- -2
- >> inv([1 2; 3 4])
- ans =
- -2.0000 1.0000
- 1.5000 -0.5000
- >> rank([1 2; 2 4])
- ans =
- 1
- >> trace([1 2; 3 4])
- ans =
- 5
- >> norm([3 4])
- ans =
- 5
- >> cond([1 2; 3 4])
- ans =
- 14.9330
- >> [V,D] = eig([1 2; 3 4])
- V =
- -0.8246 -0.4160
- 0.5658 -0.9094
- D =
- -0.3723 0
- 0 5.3723
- >> [Q,R] = qr([1 2; 3 4])
- Q =
- -0.3162 -0.9487
- -0.9487 0.3162
- R =
- -3.1623 -4.4272
- 0 -0.6325
- >> [L,U] = lu([1 2; 3 4])
- L =
- 0.3333 1.0000
- 1.0000 0
- U =
- 3.0000 4.0000
- 0 0.6667
复制代码 6.向量内积/外积
函数重要作用dot点积cross叉积- >> dot([1 2 3], [4 5 6])
- ans =
- 32
- >> cross([1 2 3], [4 5 6])
- ans =
- -3 6 -3
复制代码 7.其他函数
函数重要作用向量活动矩阵活动(默认)min/max极值单值每列最值mean平均值单值每列均值median中位数单值每列中位数std尺度差单值每列尺度差diff相邻差分长度减1每列差分sort升序排序排序向量每列排序sum求和总和每列求和prod乘积累乘每列累乘cumsum累加和向量累加每列累加cumprod累乘积向量累乘每列累乘length最大维长度向量长度二维矩阵为max(行,列)size维度信息[1,n][m,n]norm向量/矩阵范数L2 范数谱范数(最大奇异值)字符串
创建字符串以及字符串数组
单引号将内容括起来体现一个字符串,以ASC2码存储。
- % 创建字符串
- a = 'ABC'
- % 创建字符串数组,不可以使用单引号,否则输出会是字符串
- >> a = ["hello" "word"]
- a =
- 1x2 string 数组
- "hello" "word"
- >> a = ['hello', 'word']
- a =
- 'helloword'
复制代码 字符函数
函数寄义abs('ABC')返回字符串中每个字符的 ASCII 码(与 double 等价)double('ABC')返回字符串中每个字符的 ASCII 码char([65 66 67])将 ASCII 数字转换为对应字符,结果为 'ABC'int2str(123)将整数转换为字符串 '123'num2str(3.14)将数值(整数或浮点数)转换为字符串 '3.14'str2num('1.23 4.56')将字符串解析为数值向量 [1.23 4.56]strcat('ab', 'cd')字符串拼接,结果为 'abcd',主动去除尾部空格strvcat('abc', 'defg')垂直拼接字符矩阵,按最大长度补空格strcmp('abc','abc')比较字符串是否完全相同,返回 1(true)或 0(false)strncmp('abcdef','abcxyz',3)比较字符串前3个字符是否相同,返回逻辑值strrep('cat','a','o')将字符串中的 'a' 替换为 'o',结果为 'cot'strmatch('he', ['hello','hero','hi'])返回全部以 'he' 开头的字符串索引eval()将字符串明白为代码实行- >> abs('A')
- ans =
- 65
- >> double('A')
- ans =
- 65
- >> char(65)
- ans =
- 'A'
- >> int2str(123)
- ans =
- '123'
- >> num2str(3.14)
- ans =
- '3.14'
- >> str2num('1.23 4.56')
- ans =
- 1.2300 4.5600
- >> strcat('ab', 'cd')
- ans =
- 'abcd'
- >> strcat('ab', 'cd ')
- ans =
- 'abcd'
- >> strvcat('abc', 'defg')
- ans =
- 2x4 char 数组
- 'abc '
- 'defg'
- >> strcmp('abc', 'abc')
- ans =
- logical
- 1
- >> strcmp('abc', 'ab')
- ans =
- logical
- 0
- >> strncmp('abcdef', 'abcxyz', 3)
- ans =
- logical
- 1
- >> strncmp('abcdef', 'abcxyz', 4)
- ans =
- logical
- 0
- >> strrep('cat', 'a', 'o')
- ans =
- 'cot'
- >> strmatch('he', 'hi')
- ans =
- []
- >> strmatch('he', 'he')
- ans =
- 1
- >> strmatch('he', ["he" "him"; "s" "hem"])
- ans =
- 1
- 4
- >> strmatch('he', ["hello";"hero";"hi"])
- ans =
- 1
- 2
- >> eval("a=2")
- a =
- 2
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|