概述
Matlab基本运算
Matlab最基本的运算是矩阵与数组的运算。在此之外,Matlab基本运算还包括逻辑运算和多项式运算,在此篇论文中将重点对矩阵和数组运算及多项式运算作出讲解。
- 矩阵与数组的算数运算
- 数组运算
数组的基本运算是加、减、乘、除、乘方和转置运算等。
在Matlab中用如下方式表达:
加法(+) ,A+B. %与矩阵计算相同
+ A % 表示返回 A
减法(-) A-B ,% 与矩阵计算相同
- A ,% 表示对 A 的元素求反
数组乘法(.*) ,A.*B % 表示 A 和 B 的逐元素乘积
数组求幂(.^) A.^B ,% 表示包含元素 A(i,j) 的 B(i,j) 次幂矩阵
数组右除(./) . A./B ,% 表示数组A除以数组B的对应元素
% 包含元素 A(i,j)/B(i,j) 的矩阵
数组左除(.) . A.B % 表示数组B除以数组A的对应元素
.. % 表示包含元素 B(i,j)/A(i,j) 的矩阵
数组转置(.') . A.' %表示 A 的数组转置。
, %对于复矩阵,这不涉及共轭
注:数组运算又称点运算,数组运算都是对两个尺寸相同的数组进行元素对元素的运算。数组运算可针对向量、矩阵和多维数组的对应元素执行逐元素运算。如果操作数的大小相同,则第一个操作数中的每个元素都会与第二个操作数中同一位置的元素匹配。如果操作数的大小兼容,则每个输入都会根据需要进行隐式扩展以匹配另一个输入的大小。
- 矩阵运算
矩阵的基本运算是+、-、×、÷和乘方(^)等。参与矩阵运算的两个矩阵还需满足一定的大小。
矩阵加法(+) A+B .% A和B矩阵必须大小相同
矩阵减法(-) .A-B % A和B矩阵必须大小相同
矩阵乘法(*) .A*B %表示矩阵 A 和 B 的线性代数乘积
% A和B矩阵必须大小相同
矩阵左除() AB % x = AB 是方程 Ax = B 的解
%矩阵 A 和 B 必须拥有相同的行数
矩阵右除(/) B/A % x = B/A 是方程 xA = B 的解
%矩阵 A 和 B 必须拥有相同的列数
%用左除运算符表示的话,B/A = (A'B')'
矩阵幂(^) .A^B . .% 表示 A 的 B 次幂(如果 B 为标量)
,转置(') A' .%表示 A 的线性代数转置
%对于复矩阵,这是复共轭转置
附:矩阵和数组的相关操作
- 数组的元素
(1)全下标方式
全下标方式是指n维数组中元素通过n个下标来引用:
例如:a(d1,d2,d3….)
(2)单下标方式
数组元素用单下标引用,就是先把数组的所有列按先左后右的次序连接成“一维长列”,然后对元素位置进行编号。
例如:
m×n的矩阵a:元素a(i,j)对应的单下标= (j-1)×m+i。
- 子矩阵的产生
(1)用全下标方式
注意:下标为“:”表示向量的所有元素,下标为“end”表示某一维中的最后一个元素。
(2)用单下标方式
例如:(在定义了矩阵a后,可以用如下方式生成子矩阵)
>> a([10;11;12])
>> a(10:12)'
>> a(10:end)'
>> a([10;11;end])
3. 矩阵合并(已知矩阵:A , B)
horzcat(A,B); %矩阵A,B左右合并
[A B] %矩阵A,B左右合
vertcat(A,B); %矩阵A,B上下合并
[A;B] %矩阵A,B上下合并
- 多项式
1.多项式的表示
一个多项式按降幂排列为:p(x)=anxn+an-1xn-1+…+a1x+a0
在MATLAB中用行向量来表示多项式的各项系数,使用长度为n+1的行向量按降幂排列,用0表示多项式中某次幂的缺项,则多项式可表示为:
[an an-1… a1 a0]
2.多项式的运算
a.多项式求根&求值
使用roots()函数求根,多项式的根以列向量的形式表示
使用polyval(p,x)函数求变量x对应的多项式
使用polyvalm(p,x)函数求变量x对应的多项式
例如:(已经定义了p=[1 -2 1]之下)
>> roots(p)
ans =
1
1 %求出多项式p=0的根为二重根1
>> polyval(p,3)
ans =
4 %求出多项式p在x=4时的值
>> polyval(p,[3,4])
ans =
4 9 %求出多项式p在x=3,4时分别对应的值
%返回值也是数组类型
b.多项式的算数运算
多项式的算数运算主要包括乘法、除法、部分分式展开、微积分等。
乘法 conv(p1,p2) ; ,%计算多项式p1和p2的乘积
除法 deconv(p1,p2) %计算多项式p1和p2的商
部分分式展开 residue(r,p,k) %将分母多项式A和分子多项式B进行部分分式展开
residue(B, A) % residue(r,p,k)的逆用
导数 polyder(p) %计算p的导数
polyder(a,b) %计算a和b乘积的导数
[q,d]=polyder(b,a) %计算a和b商的导数
积分 polyint(p) %计算P的积分
polyint(p,k) %计算P的积分,k为常数项
例如:
>> a=[1 6 8];
>> b=[4 -8];
>> c=polyder(a,b); %c是a×b的微分
>> [q,d]=polyder(a,b); %表示求a/b的微分(a/b 的微分即为q/d)
>> [r,p,k]=residue(b,a); %表示b/a分解成了12/(x+4)+(-8)/(x+2); %反过来也可以用[b,a]=residue(r,p,k)实现
- 多项式的拟合
使用polyfit()函数来做数据的曲线拟合
例如:
>> x=[1 2 3 4 5];y=[5 43 128 280 500];
>> p=polyfit(x,y,3); %进行数据拟合
%x向量和y向量分别实测数据点的x坐标和y坐标,3为所欲拟合曲线的多项式次数。
>> x2=[1:0.1:5];
>> y2=polyval(p,x2);
>> plot(x,y,'o',x2,y2);
%画出了一个图,先画出了4个点,都是o表示的,后画出了x2,y2这一系列的点
>> grid on
Matlab符号运算
- 符号函数的创建
创建符号对象可以使用sym()和syms()函数
Sym(s,参数) %由数值创建符号函数
Sym(‘s’,参数) %由字符串创建符号函数
Syms(s1,s2,s3,…,参数) %创建多个符号变量
Syms f(s1,s2,s3) %创建符号函数和变量
- 符号对象的基本运算
符号对象运算满足算数运算、关系运算、三角函数及其反函数运算、双曲函数及其反函数运算、指数和对数函数、复数函数矩阵代数命令、矩阵代数命令
- 符号表达式的变换
- 符号表达式的化简
simplify() %多种化简方式,包括求和、分解、积分、幂、三角、指数、 对数、Bessel以及超越函数等方法来简化表达式。
- 符号表达式的替换
Subexpr() %用来替换符号表达式中重复出现的子表达式
subs(s,old,new) %用来对符号表达式中某个特定符号进行替换
例如:
>> F=subs(f,'a+b','S') %F是用’S’来替换f中的’a+b’的新函数
- 计算反函数和复合函数
finverse(f,v) %对f(v)按指定自变量v求反函数
例如:
>> syms x y
>> f=5*sin(x)+y;
>> g=finverse(f) %对默认自由变量求反函数
>> g1=finverse(f,y) %对y求反函数
>> compose(f,g,x,y,z) %计算f和g的复合函数
例如:
>> syms x y t v n
>> f=x+y;
>> g=t*v;
>> y1=compose(f,g) %以x为符号变量求复合函数
>> y4=compose(f,g,y,t,'n') %以n代替t求复合函数f(g(n))
- 多项式符号表达式
umden(s) %提取多项式符号表达式s的分子和分母
例:
>> f1=sym('1/(x-1)+1/(x+1)+3');
>> [N1,D1] = numden(f1)
N1 =
2*x+3*x^2-3
- 符号微积分、极限、级数
- 微分 diff(f,t,n) %计算f对符号变量t的n阶微分
- 积分 int(f,t,a,b) %计算符号变量t的积分
- 极限 limit(f,x,a) %求符号表达式f对x趋近于a的极限
- 级数 symsum(s,x,a,b) %计算表达式s当x从a到b的级数和
taylor(f,x, x0,’Order‘,n) ,%求泰勒级数以符号变量x在x0点展 开n项
- 积分符号变换
fourier(f,t ,w) %求以t为符号变量f的fourier变换F
ifourier (F,w,t) %求以w为符号变量的F的fourier反变换f
laplace(f,t,s) %求以t为变量f的Laplace变换F
ilaplace(F,s,t) %求以s为变量的F的Laplace反变换f
ztrans (f,n, z) %求以n为变量的f的Z变换F
iztrans(F,z,n) %求以z为变量的F的z反变换f
Matlab数据可视化
- 基本绘图函数
plot(y) %绘制以y为纵坐标的二维曲线
plot(x,y) %绘制以x为横坐标y为纵坐标的二维曲线
plot(x1,y1,x2,y2…) %在同一窗口绘制多条二维曲线图
- 对图形窗口的操作
- 多个图形的绘制
subplot(m,n,i) %将窗口分成(m×n)幅子图中,第i幅为当前图
- 双纵坐标图
plotyy(x1,y1,x2,y2) %以左、右不同的纵轴绘制两条曲线
- 同一窗口多次叠绘
使用hold命令可以保留原图形,使多个plot函数在一个坐标系中不断叠绘。hold on 、hold off 、hold 、hold all。
- 指定图形窗口
figure(n) %产生新图形窗口
- 特殊图形绘制
- 柱状图
bar(x,y,width,参数) %画柱状图
- 面积图
area(x,y) %画面积图
- 饼形图
pie(x,explode,'label') %画二维饼形图
- 直方图
hist(y,n) %统计每段的元素个数并画出直方图
N=hist(y,x) %统计出每段元素个数
- 离散数据图
stem(x,y,参数) %绘制火柴杆图
stairs(x,y,'线型') %绘制阶梯图
以下为数据可视化的具体操作实例演示:
(具体请参翻阅对应.m文件)
>> t=0:0.1:2*pi;
>> subplot(3,1,1) %创建子图,当前为第一份子图
>> plot(sin(t),cos(t)) %第一幅图像绘制
>> axis equal %axis用于此处将横纵坐标设置成相同值
>> z=t+2*cos(t)*i;
>> subplot(3,1,2) %当前为第二份子图
>> plot(z,'r:') %第二幅图像绘制
>> axis([0 2*pi -2 2]) %设置图像x轴y轴范围,参数意义为[x轴最小值 x轴最大值 y轴最小值 y轴最大值]
>> subplot(3,1,3)
>> y=peaks(10);
>> plot(y);
>> axis image %设置图像x轴y轴范围, 使得图形区域刚好紧 紧包围图象数据
最后
以上就是无语柚子为你收集整理的Matlab 学习笔记的全部内容,希望文章能够帮你解决Matlab 学习笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复