1,% 注释,快捷键ctrl+r ctrl+t
2,ctrl+enter 运行某个代码段
3,ctrl+alt+enter 插入分节符
4,特殊变量
5,format 格式
可以用命令行临时设置,也可以用预设永久设置
6,clc和clear的作用
clc % 清空命令行窗口
clear % 清空工作区
7,一些计算结果并不需要在命令行显示,那么我们可以在代码行的最后加上;
8,最基础的 MATLAB 数值
9,MATLAB 的乘号不能省略。
例如计算 sin(2π)时,我们要在 MATLAB 中输入 sin(2*pi),中间的乘号不能省略。
10,在对变量命名时,我们不要将变量命名为函数的名称,否则会导致调用函数时出错。
11,向量的创建方法
1,直接法
若元素之间用空格(可以有多个空格)、逗号分隔,则创建的是行向量;
若用分号、回车键分隔,则创建的是列向量。
a = [1 3 5]
a = [1,3,5]
b = [1;3;5]
2,冒号法(中间间隔是冒号,step表示步长)
A:step:B 来创建一个行向量。
若 step 等于 1,则可以直接简写成 A:B。
1:0:2 空的 1×0 double 行向量 % 若 step = 0,则返回空的向量。
3,函数法
linspace 等差
linspace(a,b): a,第一个元素,b最后一个元素,总数100
linspace(a,b,n):a,第一个元素,b最后一个元素,n个元素
与冒号法相比,这里的b一定是最后一个元素。
冒号法的step 是一样的,b不一定是最后一个数
不指n默认是100
logspace 等比
logspace (a,b)创建一个行向量,其第一个元素为10^a,最后一个元素为10^b,形成总数为 50 个元素的等比数列向量。
logspace(a,b,n): 创建一个行向量,其第一个元素为10^a,最后一个元素为10^b,形成总数为 n 个元素的等比数列向量。
12,在 MATLAB 中,可以使用 length 函数或
numel 函数来计算向量中包含的元素个数。
在 MATLAB 中,向量的索引是从 1 开始的。
- 单个元素引用a(1)数组索引必须为正整数或逻辑值
- 多个元素引用a(ind)ind放置向量,向量写法可以直接法/冒号法/函数法
a(ind)写成 a(1:2:9) 直接将 a(ind)写成 a(1:2:9)
ind = [1 2 2 3 3 3],那么 a(ind)得到的结果应该是[2 4 4 8 8 8],以后熟悉的话可以直接写成 a([1 2 2 3 3 3])。
技巧:使用 end 索引 end 可以用来替代向量的最后一个索引
end不能作为公式赋值给变量,只能用在括号中的索引。
错误:ind = 2:end
正确:a(2:end)
end 运算符必须用在数组索引表达式中。
13,向量元素的修改和删除
a(1) = 4 % 第一个元素改成 4
a([1,3]) = [50 60] % 第 1 个位置元素改成 50;第 3
个位置元素改成 60
a(1:3) = [5 6] % 赋值时,左右两侧的元素个数要相
同,左边引用了 3 个位置,右侧的向量长度为 2
MATLAB 报错:无法执行赋值,因为左侧和右侧的
a(2:4) = 100 % 如果右边为常数,则将指定位置的
元素全部变成这个常数。[50 100 100 100 32 64 128 256 512 1024]
a(13) = 88 % 把索引为 13 的元素赋值为 88,如果
超过了最大索引,则会自动拓展向量的大小
% 索引 11 和 12 的位置会自动用 0 进行赋值
a(1) = [ ] % 删除 a 的第一个元素
14,矩阵的创建方法
1,直接法
a = [1 2 3; 4 5 6];
2,函数法
(1)zeros(n)可以创建一个 n 行 n 列全为 0 的矩阵;
(2)zeros(m,n)可以创建一个 m 行 n 列全为 0 的矩阵。
(1)ones(n)可以创建一个 n 行 n 列全为 0 的矩阵;
(2)ones(m,n)可以创建一个 m 行 n 列全为 0 的矩阵。
(1)eye(n)可以创建一个 n 行 n 列全为 0 的矩阵;
(2)eye(m,n)可以创建一个 m 行 n 列全为 0 的矩阵。
(1)rand(n)可以创建一个 n 行 n 列的随机数矩阵;
(2)rand(m,n)可以创建一个 m 行 n 列的随机数矩阵。
randi 函数用来创建均匀分布的随机整数,其最一般的用法为:randi([imin,imax],m,n),
该命令可创建一个 m 行 n 列的随机数矩阵,随机数矩阵中的每个元素都是从区间[imin,imax]
内随机抽取的整数。
- 如果imin等于1,那么可以简写为randi(imax,m,n);
- 如果m=n,可以写成randi([imin,imax],n) %随机数在imin~imax之间的n型方阵
randn 函数用来创建标准正态分布的随机数,其使用方法和 rand 函数类似:(1)randn(n)
可以创建一个 n 行 n 列的随机数矩阵;(2)randn(m,n)可以创建一个 m 行 n 列的随机数矩阵。
由 randn 函数创建的随机数矩阵的每个元素都随机取样自标准正态分布。
diag 函数可用来创建对角矩阵或者获取矩阵的对角元素
diag(v, k)
diag([1,2,3])
diag([1,2,3])
diag([1,2,3])
获取矩阵的对角元素
diag(A)
diag(A, -1)
blkdiag 函数可用来创建分块对角矩阵。
15,矩阵的引用
1)size(A)返回向量[3 4];如果让[r,c] = size(A),那么 r = 3,c = 4。
- size(A,dim) dim =1,表示返回的行的数量。dim=2,表示返回的列的数量
- length(A) 返回行列中的最大值,numel (A)返回元素的总个数
- :表示所有行或者所有列,看写在,前面还是后面
A(:, n) 表示矩阵 A 的第 n 列的所有元素。
A(m, :) 表示矩阵 A 的第 m 行的所有元素
,逗号用于划分行/列
:等同1:end
- 可以用索引表示矩阵中的某个具体位置的索引号,具体是第一列开始往下算,到第二列。。。
sub2ind 将矩阵的下标转换为线性索引;
ind2sub 将线性索引转换为下标。
16,矩阵元素的修改和删除
- 使用直接赋值a(2,3)=10
- 第三行的每个元素全部变成100,a(3,:)=100
- 改变行类位置的值 a([],[])=[8,88;888,8888]
4)删除只能整行或者整列 a(1,:)=[] 删除第一行的所有元素
17,行拼接,列拼接
行拼接[a,b] [a b] horzcat(a,b) cat(2,a,b)
列拼接[a;b]
[a
b] vertzcat(a,b) cat(1,a,b)
堆叠
repmat(A,m,n) 对矩阵堆叠
repelemt(v,n)对向量v中的元素重复n次
repelemt(v,m,n)对向量v中的元素,行方向重复m,列方向重复n
18,矩阵的重构和重新排序
reshape 更改形状
rashape(A,m,n)或者rashape(A,[m,n]) 总数=m*n不能变,m或n有一个可以用[]代替
sort 重新排序
sort(v) 升序
[sort_v,ind] = sort(v) sort_v 重新排序后的向量,ind 对应重新排序后的向量的元素索引
sort(v,'descent')向量降序
sort(A,dim),向量排序,dim = 1,行方向升排序,2:列方向升排序
sortrows 基于列排序,其他列的数据会根据这一列跟过去,类似excel中的按某一列排序
sort_score2 = sortrows(score,1),1:第一列
sort_score2 = sortrows(score,[1,3]),1:第一列升序排序,如果第一列一样时,按第三列排序
如果需要降序,在最后加‘descent'
sort_score2 = sortrows(score,[1,3],‘descent')
flip/fliplr/flipud 翻转
flip(a) fliplr 翻转向量
flip(A,1) flipud(A)对矩阵上下翻转
flip(A,2)fliplr(A)对矩阵左右翻转
rot90 对矩阵旋转
rot90(A,n) 对矩阵A逆时针旋转n*90度