MATLAB教程
教材使用MATLAB R2020a 完全自学一本通
MATLAB 2020a 窗口认识
matlab定义
Matlab 是数以万计的工程师和科学家都在使用的数据分析和设计的工具,基于矩阵的MATLAB语言是世界上表示计算数学最自然的方式,工程师和科学家使用内置图形可以轻松地可视化数据和深入了解数据。
常用命令
MATLAB中,空格被用作矩阵或数组元素之间的分隔符,所以在写代码时尽量不要有空格。
- clear 清空窗口
MATLAB基础知识
数据类型
数据类型在C语言基础上进行补充,非记录所有数据类型。(数值类型、逻辑类型、字符串、函数句柄、结构体和单元数组)—-数组类型存储
数值类型
整数:(int8,uint8)、(int16,uint16)、(int32,uint32)、(int64,uint64)
注意:除int64和uint64类型外的所有整数类型,都可以进行数学运算。
单精度浮点数:single
双精度浮点数:double(MATLAB中默认的数据类型)
取整函数
- floor(x),向下取整
- ceil (x),向上取整
- round(x),取最接近的整数,小数部分是0.5,则向绝对值大的方向取整
- fix(x),向0取整
eps函数
用于查看精度,eps函数,可以获取一个数值和最接近该数值的浮点数之间的间隙。
复数
复数包括实部和虚部,MatLab中默认使用字符i或j作为虚部标志,在创建复数时,可以直接按照复数形式进行输入或者使用complex函数。
复数相关函数
- real(z) 返回复数z的实部
- imag(z) 返回复数z的虚部
- abs(z) 返回复数z的模
- angle(z) 返回复数z的辐度
- conj(z) 返回复数z的共轭复数
- complex(a,b) 以a为实部,b为虚部创建复数
面向复数设计的运算
复数z = a+bi=re^iθ
real(z)=a=rcosθ
imag(z)=b=rsinθ
abs(z)=根号下a^2+b^2
angle(z)=arctan(b/a)
%复数z1 = 4+3i,z2 = 1+2i,z3 = 2e^(Π/6)i表示,及计算z=z1*z2/z3
>> z1=4+3i,
z2=1+2i,
z3=2*exp(i*pi/6),
z=z1*z2/z3
z1 =
4.0000 + 3.0000i
z2 =
1.0000 + 2.0000i
z3 =
1.7321 + 1.0000i
z =
1.8840 + 5.2631i
>> angle(z)
ans =
1.2271
>> angle(z)*180/pi
ans =
70.3048
>>
无穷量Inf和非数值量NaN
MATLAB中使用Inf、-Inf分别表示正无穷量和负无穷量,NaN表示非数值量
>> a = 0/0
b = log(0)
c = inf-inf
a =
NaN
b =
-Inf
c =
NaN
>>
逻辑类型
A =
1 2 3 4 5 6 7 8 9
B =
9 8 7 6 5 4 3 2 1
>> A == B
ans =
1×9 logical 数组
0 0 0 0 1 0 0 0 0
逻辑函数
- xor(x,y)指令的功能为异或运算,x,y同为零(假)或非零(真)时返回0,否则返回1
- any(x)指令的功能为判断是否为零向量或零矩阵(向量或矩阵中的元素全部为零),如果是非零向量或非零矩阵,则返回1,否则返回0
- finite 元素有限,返回真值
- Isempty 参数为空,返回真值
- isglobal 参数是一个全局变量,返回真值
- ishold 当前绘画保持状态是“ON”,返回真值
- isieee 计算机执行IEEE算术运算,返回真值
- isinf 元素无穷大,返回真值
- isletter 元素是字母,返回真值
- isnan 元素为不定值,返回真值
- isreal 参数无虚部,返回真值
- isspace 元素为空格字符,返回真值
- isstr 参量为一个字符串,返回真值
- isstuden MATLAB为学生版,返回真值
- isunix 计算机为UNIX系统,返回真值
字符和字符串
基本矩阵操作
运算符
字符串处理函数
数组与矩阵
数组运算
矩阵操作
矩阵元素的运算
矩阵运算
稀疏矩阵
MATLAB编程基础
M文件编辑器
变量
MATLAB的控制流
控制程序流的其他常用指令
脚本和函数
M文件中变量的检测与传递
MATLAB程序的调试
数据可视化
图形绘制
二维图形绘制
三维图形绘制
四维图形可视化
数据分析
多项式及其函数
多项式的表示和创建
使用一维向量来表示多项式,将多项式的系数按照降幂次序存放在向量中。
- [三次项系数 二次项系数 一次项系数 常数] 缺少的幂次的系数用0表示
- 3x^4-10x^3+15x+1000 p=[3 -10 0 15 1000]
function s=pprintf(p)
%pprintf:for ploynomial printf
%pprintf(p) printf p as string
%2021.09.18
if nargin>1
error('Too much input arguments') %nargin验证输入参数是否是一个
end
while p(1)==0 %将高次的零去掉
p(1)=[];
end
l=length(p);
if l==0
s='0';
elseif l==1 %常数
s=sum2str(p(1));
elseif l==2 %一次函数
s=strcat(num2str(p(1)),'x+',num2str(p(2)));
elseif l>2 %多次函数
for i=1:l %循环数组每个值
if i==1
if p(i)==1
s=strcat('x^{',num2str(l-i),'}');
else
s=strcat(num2str(p(i)),'x^{',num2str(l-i),'}');
end
elseif i==l
s=strcat(s,'+',num2str(p(i))');
elseif i==l-1
s=strcat(s,'+',num2str(p(i)),'x');
else
if p(i)==0
else
s=strcat(s,'+',num2str(p(i)),'x^{',num2str(l-i),'}');
end
end
end
end
结果
>> p=[1 0 3 5 7 9];
>> pprintf(p)
ans =
'x^{5}+3x^{3}+5x^{2}+7x+9'
多项式求根
roots()函数求解一个多项式的根
%roots()函数使用
p=[3 -10 0 15 1000];
r=roots(p)
%poly()函数使用
r=[4.0283+2.8554i;4.0283-2.8554i;-2.3616+2.8452i;-2.3616-2.8452i];
p=poly(r)
结果:
r =
4.0283 + 2.8554i
4.0283 - 2.8554i
-2.3616 + 2.8452i
-2.3616 - 2.8452i
p =
1.0000 -3.3334 -0.0001 5.0016 333.3381
多项式的四则运算
一、多项式的加法
多项式阶次不同时,低阶的多项式用首零填补
a=[1 2 3 4 5];
b=[1 2 3 4 5];
c=a+b
d=[0 0 1 2 3];
e=a+d
结果:
c =
2 4 6 8 10
e =
1 2 4 6 8
多项式的乘法
conv()函数支持多项式乘法(运算法则为执行两个数组的卷积)