初识Matlab
求x^2-3x+1=0的根。
方法一:利用MATLAB多项式求根函数roots来求根。
p=[1,-3,1];
x=roots§
绘图:
x=-5:0.1:5;
y1=x.x-3x+1;
y2=zeros(size(x));
plot(x, y1, x, y2);
方法二 : 利用求单变量非线性方程根的函数fzero,求方程在某个初始点附近的实根。
f=@(x) xx-3x+1;
x1=fzero(f, 0.5)
x2=fzero(f, 2.5)
方法三:利用最优化工具箱中的方程求根函数fsolve。
f=@(x) xx-3x+1;
x1=fsolve(f, 0.5, optimset(‘Display’, ‘off’))
x2=fsolve(f, 2.5, optimset(‘Display’, ‘off’))
方法四:利用solve函数求方程的符号解,即求得的解是一个表达式。
syms x
x=solve(x^2-3*x+1)
x=eval(x)
Matlab的特点编程效率高
Matlab基础
1.1Matlab系统环境
- 操作界面
- 主窗口
- 命令行窗口: …为续行符
- 当前文件夹窗口
3.1 设置当前文件夹- 在当前文件夹工具栏或当前文件夹床楼选择某文件夹为当前文件夹
- 使用cd命令
>>cd e:\work
- 工作区窗口
- 变量信息及显示
- 搜索路径
变量->内部函数->程序文件->当前文件夹下的程序文件、再到文件搜索路径文件夹中的程序文件
1.2Matlab数值数据
- 数值数据类型的分类
- 整型
- 无符号整数:8、16、64位整数
- 取值范围:00000000 ~ 11111111(0 ~ 2^8 -1)
- 带符号整数:8、16、64位整数
- 取值范围:10000000 ~ 01111111(-2^7 ~ 2^7-1)
>>x=int8(129) %输出127 x=uint8(129) %输出129
- 无符号整数:8、16、64位整数
- 浮点型
- single函数:将其他类型的数据转换为单精度型
- double函数:将其他类型的数据转换为双精度型
class()%返回数据类型函数
- 复数型:虚数单位用i或j来表示
- real函数:求复数的实部
- imag函数:求复数的虚部
- 整型
- 数值数据的输出格式
- format命令的格式
>> format long(short)
注意:format命令只影响数据输出格式,而不影响数据的计算和存储
- format命令的格式
- 常用数学函数
- 函数的调用格式为:函数名(函数自变量的值) 函数运算时将函数逐项作用与矩阵的每个元素上
- 常用函数的应用
- 三角函数以角度为单位在函数名后加‘d’
>>sin(pi/2) sind(90)
- abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值
abs(-4) abs(3+4i) abs('a')
- 用于取整的函数有fix、floor、ceil、round
- 函数应用举例
- 分别求一个三位正整数的个位数子、十位数字、百位数字
- 求[1,100]区间的所有素数
- 三角函数以角度为单位在函数名后加‘d’
1.3变量及其操作
- 变量与赋值语句
- Matlab中变量名区分大小写
- Matlab内置变量一般为小写
exp()%自然指数函数
- 预定义变量
- ans是默认赋值变量
- i和j代表虚数单位
- pi表示圆周率
- NaN表示非数(绘图时需要裁掉一部分,把裁掉的部分的坐标数据设为NaN)
- 变量的管理
- 内存变量的删除与修改(工作区)
- who和whos命令
- 内存变量文件(扩展名为.mat)
- save命令:创建内存变量文件
>>save mydata a x %将变量a x 存入mydata.mat文件
- load命令:装入内存变量文件
>>load mydata
- save命令:创建内存变量文件
1.4 Matlab矩阵的表示
- 矩阵的建立
- 利用直接输入法
A=[1,2,3;4,5,6;7,8,9]
- 拼接矩阵
C=[A,B;B,A]
- 利用直接输入法
- 冒号表达式
t = e1:e2:e3
e1为初始值 e2为步长 e3为终止值————产生一个行向量- linspace函数
linspace(a,b,n)
a为第一个元素 ,b为最后一个元素,n是元素总数
- linspace函数
- 结构矩阵和单元矩阵
- 结构矩阵:将数据类型不同而逻辑上相关的数据组成一个有机整体
- 格式:结构矩阵元素.成员名=表达式
a(1).x1=10 ;a(1).x2='liu'; a(1).x3=[11,21,34,78];
- 单元矩阵:与一般矩阵相似,用大括号括起
b = {10,'liu',[11,21,34,78];12,'wang',...}
- 结构矩阵:将数据类型不同而逻辑上相关的数据组成一个有机整体
1.5 矩阵元素的引用
- 矩阵元素的引用方式
- 通过下标来引用矩阵的元素
- A(3,2)表示A矩阵第三行第二列的元素
- 通过序号来引用(矩阵元素在内存中的排列顺序)
- 以m×n矩阵A为例,矩阵元素A(i,j)的序号为 (j-1)×m+1
- sub2ind函数:将矩阵中指定元素的行、列下标转换成存储的序号。
D = sub2ind(S,I,J)
- S 为矩阵行数和列数组成的向量;D 为序号
- I 为转换矩阵的行下下标;J 为转换矩阵的列下标
- ind2sub函数:将矩阵元素的序号转汉城对应的下标
[I,J]=ind2sub(S,D)
- 通过下标来引用矩阵的元素
- 利用冒号表达式获得子矩阵(矩阵中一部分元素构成的矩阵)
- A(i,:) 第i行的全部元素
- A(:,j) 第j列的全部元素
- A(i:i+m,k:k+m) 第ii+m行内且在第kk+m列中的所有元素
- A(i:i+m,:) 第i~i+m行的全部元素
- end表示最后的元素
- 利用空矩阵删除矩阵中的元素
- 例如:
A(:,[2,4])=[]
第二列和第四列矩阵元素删除
- 例如:
- 改变矩阵的形状(只改变矩阵的行数和列数不改变元素个数和顺序)
- 例如:
y=reshape(x,3,4)
- A( : ) 将矩阵每一列的元素堆叠起来,成一个列向量
- 例如:
1.6 Matlab基本运算
- 算术运算
- 基本算术运算(四则运算)+ - * /(右除) \(左除) ^乘方
- Matlab的算术运算是在矩阵的意义下进行的
- 单个数据的算术运算只是矩阵运算的一种特例
- 🔈点运算
- 点运算符:.*点乘 ./ 点右除 .\ 点左除 .^点乘方
- 两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵同型
- 基本算术运算(四则运算)+ - * /(右除) \(左除) ^乘方
- 关系运算📌
- 关系运算符:<小于<=小于等于 >大于 >=大于等于 ==等于 ~=不等于
- 1.当两个比较量时标量时,直接比较两数大小,若关系成立表达式结果为1,否则为0
- 2.当参与比较的量时两个同型矩阵时,比较两矩阵相同位置的元素按标量关系运算规则逐个进行,最终返回一个与原矩阵同型的01矩阵
- 3.当参与比较的是一个标量,另一个是矩阵是,则把标量与矩阵每一个元素进行关系运算,得到上述01矩阵
- 逻辑运算
- 逻辑运算符: &与 |或 ~非
- 标量运算规则
- a&b a、b全为非零是,运算结果为1,否则为0
- a|b a、b中只要有一个为非零时,运算结果为1
- ~a 当a为零时,运算结果为1
1.7 字符串处理⛅️⛅️⛅️
- 字符串的表示
- 在Matlab中,字符串时用单引号括起来的字符序列
>>xm='National University of Defense Technology'
- 相当于一个行向量,可以用切片进行索引
>>xm(1:3)
- 相当于一个行向量,可以用切片进行索引
- 若字符串中含有单引号,则要用两个单引号表示
- 多行字符串(字符串矩阵)
ch=['abcdef';'123456']
- 在Matlab中,字符串时用单引号括起来的字符序列
- 字符串的操作
- 字符串的执行;格式:
eval(s)
将字符串s中的内容作为matlab命令执行⚠️ - 字符串与数值之间的转换💪
- abs和double函数获取字符串矩阵对应的ASCII码数值矩阵
s1=MATLAB; a=abs(s); a= 77 65 84 76 65 66
- char函数可以把ASCII码矩阵转换为字符串矩阵
char(a+32) ans = matlab
- abs和double函数获取字符串矩阵对应的ASCII码数值矩阵
- 字符串的比较😊
- 关系运算符比较
'www0'>='W123' ans =1 1 1 0
- 字符串比较函数
strcmp(s1,s2);
用来比较字符串s1和s2是否相等,如果相等,返回结果为1,否则为0strncmp(s1,s2,n);
用来比较两个字符串前n个字符是否相等,如果相等返回1,否则返回0strcmpi(s1,s2);
在忽略大小写前提下,比较字符串s1和s2是否相等,如果相等,返回1,否则返回0strncmpi(s1,s2,n);
在忽略字符串大小写前提下,比较两个字符串前n个字符是否相等,如果相等返回1,否则返回0
- 字符串的查找与替换👍
findstr(s1,s2);
返回短字符串在长字符串中的开始位置strrep(s1,s2,s3);
将字符串s1中的所有子字符串s2替换为字符串s3
- 关系运算符比较
- 字符串的执行;格式:
第一专题知识点总结
思维导图 mindmap