前言
MatLab 2018a 官方教程这是第一篇教程。接下来是第二篇,介绍一些大家不太注意的东西。
一.Matlab系统环境
- >> :命令提示符
- … : 续行符
- 修改文件夹;①文件夹工具栏修改②cd命令
- 工作区:变量的显示与操作
- 如果给内部函数赋值,恢复需要在工作区删掉这个变量就行
- 搜索路径:变量->内部函数->程序文件
- 设置搜索路径:①path命令②主页,环境:设置路径
二.Matlab数值数据
数值数据分类:
- 整型
- 无符号:8位,16,32,64;int8,uint8:强制转换类函数
- 带符号:8位,16,32,64
- 浮点型
- 单精度:4字节;single,转化函数
- 双精度:8字节;double,转化函数;数字数据默认为双精度。
- 复数型
- 实部和虚部,默认双精度。虚数单位j或者i;real(),imag(),求实部和虚部。
数值数据的输出格式:format 格式符
Trial>> format long
Trial>> 3/2
ans =
1.500000000000000
Trial>> format
Trial>> 3/2
ans =
1.5000
注意:format只影响数据的输出格式,不影响数据的计算和存储;
常用数学函数:
(1) 函数的自变量规定为矩阵变量,当然也可以是标量,标量本身是矩阵的一种特例;
运算时是将函数逐项作用于矩阵的每一个元素上,最后运算的结果就是一个与自变量同型的矩阵。
(2)常用函数的应用
①以角度为单位的就在函数名后面加“d”,用来区别;
Trial>> sin(pi/2)
ans =
1
Trial>> sind(90)
ans =
1
②abs:绝对值,复数的模,字符串ascII
Trial>> abs(-4)
ans =
4
Trial>> abs(3+4i)
ans =
5
Trial>> abs('a')
ans =
97
③取整的函数:
- round 四舍五入
- ceil 向上取整
- floor 向下取整
- fix 舍去小数
Trial>> round(4.7)
ans =
5
Trial>> ceil(-3.8)
ans =
-3
Trial>> floor(3.6)
ans =
3
Trial>> fix(-3.2)
ans =
-3
④举例:求345每一位数字
Trial>> m = 345;
Trial>> m1 = rem(m,10); % 求余数
Trial>> m2 = rem(fix(m/10),10);
Trial>> m3 = fix(m/100);
Trial>> [m1 m2 m3]
ans =
5 4 3
100以内的素数
Trial>> x=1:100;
Trial>> k=isprime(x); % 判断素数
Trial>> k1=find(k); % 找到序号
Trial>> p=x(k1)
p =
1 至 9 列
2 3 5 7 11 13 17 19 23
10 至 18 列
29 31 37 41 43 47 53 59 61
19 至 25 列
67 71 73 79 83 89 97
三.变量及其操作
变量:内存单元的抽象
变量名:字母开头。
变量的管理:
Trial>> who
您的变量为:
ans k k1 m m1 m2 m3 p x
Trial>> whos
Name Size Bytes Class Attributes
ans 1x3 24 double
k 1x100 100 logical
k1 1x25 200 double
m 1x1 8 double
m1 1x1 8 double
m2 1x1 8 double
m3 1x1 8 double
p 1x25 200 double
x 1x100 800 double
四.Matlab矩阵
建立:①[]②利用建立好的建立更大的
③复数矩阵
Trial>> B=[1 2;3 4];
Trial>> C=[5 6;7 8];
Trial>> A = B + i*C
A =
1.0000 + 5.0000i 2.0000 + 6.0000i
3.0000 + 7.0000i 4.0000 + 8.0000i
④冒号表达式
⑤linspace(a,b,n) n省略自动100个
结构矩阵(有名字)
单元矩阵(无名字),大括号括起来
五,读取元素
按照列存储,访问的数字就是内存的位置
Trial>> A=[1 2 3;4 5 6]
A =
1 2 3
4 5 6
Trial>> A(3)
ans =
2
利用空矩阵删除矩阵的元素:赋值=[]
改变矩阵形状,reshape(A,m,n):只改变原矩阵的函数和列数,并不改变元素个数和存储顺序;
A(:) : 将A的每一列元素堆叠起来,成为一个列向量;
六.基本运算
/ 右除 \ 左除 ^ 乘方
- 加减运算
- 同型矩阵,对应元素加减
- 不同型,给出错误信息
- 一个标量也可以和矩阵进行加减运算,把标量和矩阵的每一个元素进行加减
- 乘法
- A的列数和B的行数相等;
- 除法
- A:非奇异方阵,B/A,等效Binv(A);A\B,等效inv(A)B;简单方法:把符号的斜度邪到平的;
- 乘方运算
- A^x: A方阵,x标量
6.2 点运算 .* ./ .\ .^
- 对应元素进行相关计算,要求两矩阵同型
6.3 关系运算
~= 不等于
- 标量之间,比较大小
- 同型矩阵,相同位置元素按照标量关系运算规则,结果是一个与原矩阵同型的矩阵,它的元素由0和1组成。
- 标量和矩阵比较
6.4 逻辑运算 & | ~
- 同型矩阵,对应比较
- 标量和矩阵
七.字符型数据
把一个字符串作为一个行向量
’i''m a teacher' # 2个‘
Trial>> ch = ['dd';'dddd']
# 要串联的数组的维度不一致。
Trial>> ch='AC34cdvSDC4ferf';
Trial>> subch = ch(1:5); # 提取
Trial>> revch=ch(end:-1:1); # 反转
Trial>> k=find(ch>='a'&ch<='z'); # 找到小写字母
Trial>> ch(k) = ch(k) - ('a'-'A');# 变大写
Trial>> length(k); # 统计小写字母
操作:
(1) 字符串的执行 eval(s)
(2) 字符串与数值的转换
- abs和double可以获取字符串矩阵的acsII
- char 可以把ASCII矩阵转换为字符串矩阵
(3)比较 返回值1和0
- 逻辑运算,维度相同,ascii比较
- strcmp(s1,s2)
- strncmp(s1,s2,n) 前n个
- strcmpi(s1,s2) 忽略字母大小写
- strncmpi(s1,s2,n)
(4) 查找和替换
- findstr(s1,s2) 返回短字符串在长字符串的开始位置
- strrep(s1,s2,s3) 将是s1中的所有子字符串s2替换s3