matlab.docx
- 文档编号:25719203
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:26
- 大小:211.75KB
matlab.docx
《matlab.docx》由会员分享,可在线阅读,更多相关《matlab.docx(26页珍藏版)》请在冰豆网上搜索。
matlab
一,变量与函数
1.变量
(1)MATLAB中变量的命名规则是:
只能有数字,字母,下划线组成且第一个必须是字母(不能含空格)
注意:
(1)变量名区分大小写;
(2)变量名最多不超过19个字符;
(2)特殊变量表
2.函数
(1)定义函数的方式:
方式一;function因变量名=函数名(自变量名)
函数的调用;函数名(自变量名)
方式二:
fun=inline(‘函数表达式’,’自变量’)
函数的调用;feval(‘fun’,’自变量值’)
注意:
(1)MATLAB的每条命令后,若为逗号或无标点符号,
则显示命令的结果;若命令后为分号,则禁止显示结果.。
(2)“%”后面所有文字为注释.
(3)“...”表示续行.
2.,数学函数
二、数组与矩阵
1数组
1,.数组的创建:
①一行多列数组(行数组或行向量)
(1)x=[abcdef]创建包含指定元素的行向量.
(注意在此之前要对字母进行定义例如symsabcde)
(2)x=first;increment;last
创建从first开始,加increment计数,到last结束的行向量.
(3)x=linspace(first,last,n)
创建从first开始,到last结束,有n个元素的行向量.
(4)x=logspace(first,last,n)
创建从first开始,到last结束,有n个元素的对数分隔行向量.
②一列多行的列向量
(1)转置A’
(2)元素之间用分号分隔例如x=[a;b;c;d;e;f]
2.数组元素的访问
注意:
数组元素的编址是从1开始的
(1)访问一个元素:
x(i)表示访问数组x的第i个元素.
(2)访问一块元素:
x(a:
b:
c)表示访问数组x的第a个元素开始,以步长b到第c个元素(但不超过c),b可以为负数,b缺省时为1.
(3)直接使用元素编址序号.x([abcd])表示提取数组x的第a、b、c、d个元素构成一个新的数组[x(a)x(b)x(c)x(d)].
例如:
x=[345678912];
x([3579])
结果为[5792]
3.数组的运算
(1)标量-数组运算
数组对标量的加、减、乘、除和平方运算,是指数组的每个元素对该标量施加相应的加、减、乘、除、平方运算.
设:
a=[a1,a2,…,an],c是标量.
则:
a+c=[a1+c,a2+c,…,an+c]
a-c=[a1-c,a2-c,…,an-c]
a.*c=[a1*c,a2*c,…,an*c](也可以用a*c)
a./c=[a1/c,a2/c,…,an/c](右除)
a.\c=[c/a1,c/a2,…,c/an](左除)
a.^c=[a1^c,a2^c,…,an^c]
c.^a=[c^a1,c^a2,…,c^an]
(2)数组-数组运算
当两个数组有相同维数时,加、减、乘、除、幂运算可按元素对元素方式进行,不同大小或维数的数组是不能进行运算的.
设:
a=[a1,a2,…,an],b=[b1,b2,…,bn]
则:
a+b=[a1+b1,a2+b2,…,an+bn]
a.*b=[a1*b1,a2*b2,…,an*bn]
a./b=[a1/b1,a2/b2,…,an/bn]
a.\b=[b1/a1,b2/a2,…,bn/an]
a.^b=[a1^b1,a2^b2,…,an^bn]
2.矩阵
1.矩阵创建
格式:
A=[第一行元素;第二行元素;...;第n行元素]
说明:
以空格或逗号分隔的元素指定的是不同列(同行)的元素,而以分号分隔的元素指定了不同行的元素。
在输入矩阵时,按Enter键也表示开始新一行.(此时要在M文件中输入)
注意:
输入矩阵时,严格要求所有行有相同的列.
例m=[1234;5678;9101112]
p=[1111
2222
3333]
二,特殊矩阵的建立
(1)x=[];产生一个空矩阵
(2)zeros(m,n)产生一个m行n列的零矩阵
(3)eye(m,n)产生一个m行n列的单位矩阵
(4)ones(m,n)产生一个m行n列的元素全为1的矩阵
(5)magic(n)产生每行每列对角线元素之和相等的矩阵
(6)hilb(4)
效果为:
[11/21/3
1/21/31/4
1/31/41/5]
2.矩阵中元素的访问
(1)取矩阵中某个元素
根据编址A(i)(按列进行从1开始的)
根据相对位置A(i,j)(表示取矩阵中第i行第j列元素)
(2)取矩阵A的第i行:
A(i,:
)
(3)矩阵A的第j列:
A(:
,j)
(4)依次提取矩阵A的每一列,将A拉伸为一个列向量:
A(:
)
(5)取矩阵A的第i1~i2行、第j1~j2列构成新矩阵
:
A(i1:
i2,j1:
j2)---------表示代数余子式
(6)以逆序提取矩阵A的第i1~i2行,构成新矩阵:
A(i2:
-1:
i1,:
)
(7)以逆序提取矩阵A的第j1~j2列,构成新矩阵:
A(:
,j2:
-1:
j1)
(8)删除矩阵中某行或某列元素(注意不能删除某一个元素)
删除A的第i1~i2行,构成新矩阵:
A(i1:
i2,:
)=[]
删除A的第j1~j2列,构成新矩阵:
A(:
,j1:
j2)=[]
(9)将矩阵A和B拼接成新矩阵:
[AB](AB具有相同的行数)
,[A;B](AB具有相同的列数)
3.矩阵的运算
(1)标量-矩阵运算与标量-数组运算相同.
设:
a=[a11,a12,....a1n;a21,a22,...a2n;an1;an2;...ann];c是标量.
a+c=[a11+c,a12+c,…,a1n;+c;a21+c,a22+c,…,a2n+c;
an1+c,an2+c,…,ann+c];
a-c=[a11-c,a12-c,…,a1n-c;a21-c,a22-c,…,a2n-c;an1-c,an2-c,…,ann-c]
a.*c=[a11*c,a12*c,…,a1n*c;a21*c,a22*c,…,a2n*c;an1*c,an2*c,…,ann*c;]
a./c=[a11/c,a12/c,…,a1n/c;a21/c,a22/c,…,a2n/c;an1/c,an2/c,…,ann/c;]
(右除)
a.\c=[c/a11,c/a12,…,c/a1n;c/a21,c/a22,…,c/a2n;c/an1,c/an2,…,c/ann;]
(左除)
a.^c=[a11^c,a12^c,…,a1n^c;a21^c,a22^c,…,a2n^c;an1^c,an2^c,…,ann^c;]
c.^a=[c^a11,c^a12,…,c^a1n;c^a21,c^a22,…,c^a2n;c^an1,c^an2,…,c^ann;]
(2)矩阵-矩阵运算
1.元素对元素的运算,同数组-数组运算.
2.矩阵运算:
矩阵加法:
A+B
矩阵减法:
A-B
矩阵乘法:
A*B
方阵的行列式:
det(A)
方阵的逆:
inv(A)
方阵的特征值与特征向量:
[V,D]=eig(A)
其中。
V表示特征值,D表示特征向量
三,运算符
1.算术运算符
算术操作
说明
算术操作
/右除A/B=B.*A-1
\左除A\B=A-1.*B
说明
+
加分运算
./
点右除
-
减法运算
\
左除
*
乘法运算
.\
点左除
.*
点乘运算
^
乘幂
/
右除
.^
点乘幂
优先级;
结合方向:
2.关系运算符
关系操作符
说明
关系操作符
说明
>
大于
<=
小于或等于
>=
大于或等于
==
等于
<
小于
~=
不等于
优先级;>,>=,<,<=大于==,!
=
结合方向:
自左向右
3.逻辑运算符
逻辑运算符
说明
&
与
|
或
~
非
优先级;~大于&大于|
结合方向;自左向右
三,程序控制结构
1.选择语句
(1)单选择
if判断表达式
语句1
end
(2)双选择
if判断条件1
语句1
end
if判断条件2
语句2
end
或者
if判断条件
语句1
else
语句2
End
(3)多个选择
Selectcase表达式
Case表达式1
语句1
Case表达式2
语句2
......
Case表达式n
语句n
Caseelse
语句n+1
endselect
或者
if判断条件1
语句1
elseif判断条件2
语句2
.......
elseif判断条件n
语句n
else
语句n+1
endif
2.循环语句
for循环格式;
for循环变量=初值:
步长:
终值
循环体
end
while循环格式
while(表达式)
循环体
end
实现dowhile循环
while1
循环体
If(条件)
break
end
end
四字符串
1、字符串的建立
在MATLAB中,用一对单撇号(‘’)括起来的字符序列就构成了一个字符串。
方法1:
直接输入法
将其赋值给一个变量,那么该变量就是字符串变量。
例如:
>>str1=‘Mynameis林新棋.’
str1=
Mynameis林新棋.
注意:
MATLAB将字符串当作一个行向量,每个元素对应一个字符;也就是将字符串存在一个行向量中,向量的每个元素对应一个字符。
方法2:
冒号法
>>str2=char(‘a’:
2:
’r’)
方法3:
函数法
>>str3=char(linspace(‘e’,’t’,10))
说明1:
也可以建立多行字符串矩阵。
>>A=[‘Hello’;’world’;’我是林新棋’]
(注意:
每个字符串长度相同)
2.字符串矩阵的操作
说明2:
字符串标识方法和数值向量或矩阵相同。
也就是可以对元素进行提取或重新赋值的操作。
例如:
(空格也作为一个字符)
>>str1=‘Mynameis王小明.’;
>>str1(4)
ans=
n
>>str2=str1(end:
-1:
1)
str2=
.明小王siemanyM
3.求字符串的长度格式;
>>size(str1)---------------求出行和列
ans=
115
行
列
>>length(str1)--------求出字符串中字符的个数
Ans=
15
4.ASCII码矩阵与字符串矩阵的相互转换
注意:
字符串是以ASCII码形式存储的。
abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。
char函数可以把ASCII码矩阵转换为字符串矩阵。
5.几个常用的函数
(1)find(条件):
到矩阵中查找满足条件的元素返回元素的编址。
例如:
ch=‘ABc123d4e56Fg9’;
k=find(ch>=‘a’&ch<=‘z’)%找小写字母的位置
k=
37913
(2)upper(str):
将字符串str中的小写字母改为大写字母,其他的字符保持不变;
(3)ower(str):
将字符串str中的大写字母改为小写字母,其他的字符保持不变;
五MATLAB作图
1.MATLAB作图的原理
Matlab作图是通过描点、线连来实现的,故在画一个曲线图形之前,必须先取得该图形上的一系列的点的坐标(即横坐标和纵坐标),然后将该点集的坐标传给Matlab函数画图.
2.作图函数
(一)
(1)plot(横坐标,纵坐标,[‘线的形状’])
(1)线的形状
线型
符号
实线
-
虚线
:
点划线
-.
双划线
--
(2)线的颜色
颜色
符号
红色
r
黄色
y
绿色
g
青色
c
蓝色
b
黑色
k
白色
w
品红色
m
(3)点的标记号
标记
符号
标记
符号
点号
.
方块
s
圆圈
。
菱形
d
叉号
x
上三角
^
加号
+
下三角
v
星号
*
左三角
<
五角星
p
右三角
>
六角星
h
说明:
线的形状省略使用默认的(蓝色实现)
例1、
(1)在区间[0,2π]画sinx;
(2)在[0,2π]用红线画sinx,用绿圈画cosx.
(1)>>x=0:
0.1:
2*pi;
>>y=sin(x);
>>plot(x,y)
(2)(画在二个画板上)
>>x=linspace(0,2*pi,100);
>>y=sin(x);
>>plot(x,y,'r')
>>figure%从新打开一个图形窗口(新建个画板)
>>x=0:
0.1:
2*pi;
>>y=cos(x);
>>plot(x,y,'go')
说明:
命令figure(H)新建H窗口,激活图形H使其可见,并把它置于其他图形之上.
建立M文件
x=linspace(0,2*pi,100);
y=sin(x);
plot(x,y,'r')
figure%新开辟窗口
x=0:
0.1:
2*pi;
y=cos(x);
plot(x,y,'go')
(2)plot(x,y1,s1,x,y2,s2,...)
(画在一个画板上)
(1)x=0:
0.1:
2*pi;
y1=sin(x);
y2=cos(x);
plot(x,y1,’r’,x,y2,’go’)
(2)x=0:
0.1:
2*pi;
y1=sin(x);
y2=cos(x);
plot(x,y1,’r’)
holdon
plot(x,y2,’go’)
说明:
命令holdon保持当前图形,以便继续画图到当前的图上.
命令holdoff释放当前图形窗口
注意:
”holdon””holdoff”后面不能跟分号“;”
(二)
(1)ezplot(‘f’,[a,b])
>>ezplot(‘sin(x)’,[0:
2*pi])
(2)ezplot(‘f’,[xmin,xmax,ymin,ymax])
表示在区间[xmin,xmax,ymin,ymax]绘制隐函数f(x,y)=0
例、在[-2,0.5],[0,2]上画隐函数ex+sin(xy)=0的图像
>>ezplot(‘exp(x)+sin(x*y)’,[-2,0.5,0,2])
(3)ezplot(‘x’,’y’,[a,b])
表示在a 例: 在[0,2π]上画x=cos(t)3,y=sin(x)3的图像 >>ezplot('cos(x).^3','sin(x).^3',[0,2*pi]) (三) (1)fplot(‘M文件中函数名’,[a,b]) 例、在[-1,2]上画y=e2x+sin(3x2)的图像 建立M文件 functiony=fun(x) y=exp(2*x)+sin(3*x.^2); >>fplot(‘fun’,[-1,2]) 例6、在[-2,2]范围内绘制函数tanx的图形. >>fplot(‘tanx’,[-2,2]) 注意: fplot在画函数图像时不是matlab自带的函数必须建立M文件才能画图,是自带的函数不必建立M文件 (2)fplot(‘[函数名列表]’区间) 例、将x、y的取值范围都限制在[-2π,2π],画函数tanx,sinx,cosx的图形. >>fplot(‘[tan(x),sin(x),cos(x)]’,[-2*pi,2*pi,-2*pi,2*pi]) 对数坐标图 loglog() 表示x,y坐标是对数坐标 semilogx() 表示x坐标轴是对数坐标系 Semilogy() 表示y坐标轴是对数坐标系 plotyy 表示有两个y坐标轴,一个在左、右边 例x=-2: 0.1: 2; semilogy(x,exp(x),’r’) (在使用对数坐标图时x轴要分割可以使用x=logspace(a,b);) Part1.代数方程的求解 1.solve函数. (1)最简单调用格式: s=solve(‘代数方程1’,’代数方程2’,…,’代数方程n’)(返回一个结构型变量S,用S.x可以得到方程的根) (2)直接得出根: (变量返回到MATLAB工作空间) [x,…]=solve(‘代数方程1’,’代数方程2’,…,’代数方程n’) (3)同上,并指定变量 [x,…]=solve(‘代数方程1’,’代数方程2’,…,’代数方程n’) 注意: 方程要写成f(x)=0这种形式 例1: 求e-3tsin(4t+2)+4e-0.5tcos(2t)=0.5 s=solve('exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)=0.5') 例2: 求方程组的解 x2e-xy2/2+e-x/2sin(xy)=0 x2cos(x+y2)+y2ex+y=0 (1) s=solve('x^2*exp(-x*y^2/2)+exp(-x/2)*sin(x*y)','x^2*cos(x+y^2)+y^2*exp(x+y)'); x=s.x y=s.y (2) [x,y]=solve('x^2*exp(-x*y^2/2)+exp(-x/2)*sin(x*y)','x^2*cos(x+y^2)+y^2*exp(x+y)') 2.fsolve函数 最简单格式: x=fsolve(‘函数名’,初值) 其中x表示所求的解, 注意: 初值要写成列向量的形式 例: 求方程组的解 X2+y2-1=0 0.75x3-y+0.9=0 解: 首先定义一个函数 functionq=fun(p) q=[p (1)^2+p (2)^2-1;0.75*p (1)^3-p (2)+0.9]; 在命令窗口中输入: >>x=fsolve(‘fun’,[1;2]) 也可以用内敛函数 f=inline(‘[方程]’,‘自变量’)(单个方程时[]可省略,自变量也可以没有) s=fsolve(f,[初值]) 注意: 初值要写成列向量的形式,f没有单引号。 说明: 内联函数与function区别: 内联函数直接引用,引用function时加’’或@ Part2.插值与拟合 一插值 已知有n+1个节点(xj,yj),j=0,1,…,n,其中xj互不相同,节点(xj,yj)可看成由某个函数y=f(x)产生; 构造一个相对简单的函数y=P(x);使P通过全部节点, 即P(xk)=yk,k=0,1,…,n;用P(x)作为函数f(x)的近似。 (1)散点图的绘制 plot(x,y,’点的标记号’) 例: 已知一组数据如下作散点图 x 0 3 5 7 9 11 12 13 14 15 y 0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6 解: x0=[035791112131415]; y0=[01.21.72.02.12.01.81.21.01.6]; plot(x0,y0,’r+’) (2)用MATLAB作一维插值计算 yi=interp1(x0,y0,xi,'method') 格式: ‘nearest’: 最邻近插值‘linear’: 线性插值;‘spline’: 三次样条插值;‘cubic’: 立方插值。 缺省时: 线性插值。 注意: 所有的插值方法都要求x是单调的,并且xi不能够超过x的范围(提示NaN或插值结果偏差太大)。 例: 已知一组数据如下求x=10的函数值 x0 0 3 5 7 9 11 12 13 14 15 y0 0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6 解: x0=[035791112131415]; y0=[01.21.72.02.12.01.81.21.01.6]; x=10; y=interp1(x0,y0,x,'spline') (3)用MATLAB作二维网格数据的插值计算 格式: z=interp2(x0,y0,z0,x,y,’method’) ‘nearest’最邻近插值‘linear’双线性插值‘cubic’双三次插值缺省时,双线性插值 注意: 要求x0,y0单调;x,y可取为矩阵,或x取行向量,y取为列向量,x,y的值分别不能超出x0,y0的范围(提示NaN)。 例: 设z=x2+y2,对函数z在[0,1]×[0,2]区域内进行插值。 解: x0=0: 0.1: 1; y0=0: 0.1: 2; [X0,Y0]=meshgrid(x0,y0); 行向量 Z0=X0.^2+Y0.^2; x=[0.125,0.134]; 列向量 y=[1.23: 1.34]; [X,Y]=meshgrid(x,y); Z=interp2(X0,Y0,Z0,X,Y) (4)用MATLAB作二维散点数据的插值计算 cz=griddata(x,y,z,cx,cy,‘method’) 格式: ‘nearest’最邻近插值‘linear’双线性插值‘cubic’双三次插值'v4‘Matlab提供的插值方法缺省时,双线性插值 注意: 要求cx,cy都取行向量。 例: 已知有一组数据如下作插值求 x=[133,143,155,167];y=[111,56,32,87];函数值 x0 129.0 140.0 103.5 88.0 185.5 195.0 105.5 y0 7.5 141.5 23.0 147.0 22.5 137.5 85.5 z0 4 8 6 8 6 8 8 x0 157.5 107.5 77.0 81.0 162.0 162.0 117.5 y0 -6.5 -81.0 3.0 56.5 -66.5 84.0 -33.5 z0 9 9 8 8 9 4 9 解: x0=[129.0,140.0,103.5,88.0,185.5,195.0,10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab