x=i:
-j:
k如果i>k,生成以i为初值,k为终值,-j为步长的有限等差数列;
2.利用linspace(a,b)生成等差向量
a=linspace(n1,n2,n)
在线性空间上,行矢量的值从n1到n2,数据个数为n,缺省n为100。
》a=linspace(1,10,10)
a=
12345678910
x=linspace(2,8)将生成100个数,以2开始,以8结束。
y=linspace(2,8,10)将生成10个数,以2开始,以8结束。
3.利用logspace(a,b)生成等比向量
a=logspace(n1,n2,n)
在对数空间上,行矢量的值从10n1到10n2,数据个数为n,缺省n为50。
这个指令为建立对数频域轴坐标提供了方便。
》a=logspace(1,3,3)
a=
101001000
b)数值数组的寻访与赋值:
x(3):
寻访数组x的第三个元素
x([125]):
返回数组x的第1、2、3个元素组成的子数组
x(2:
4):
返回数组x第2到第4个元素组成的子数组
x(2:
end):
返回数组x第2个元素到最后一个元素组成的子数组
x(3:
-1:
1):
返回数组x第3个元素以步长为-1到第1个元素组成的子数组,即等效为x=([321])
x(find(x>0.5)):
返回数组x中大于0.5的元素组成的子数组
x([1235631]):
对数组x中的元素可以重复寻访,返回的数组长度允许大于原数组
x(3)=12:
把数组x的第3个元素赋值为12
x([14])=[28]:
把数组x的第1、4个元素分别赋值为2和8
②矩阵操作、运算(重点啊尼玛尼玛~)
A.矩阵创建的常用方法:
1.直接输入法;2.函数法;3.矩阵编辑器;4.交互输入法,5.数据文件法。
B.直接输入法三条规则:
1.矩阵元素必须在方括号[]之内;
2.同一行相邻元素间用逗号或空格分隔;
3.矩阵的行与行之间必须用分号分隔。
C.函数法构造特殊矩阵
C=[]—产生空阵
A=diag(V)--对角元素向量V=[a1,a2,…,an]
r=rand——产生随机数
R=rand(3,4)——产生3×4阶随机矩阵
E=eye(3)——产生3阶单位矩阵
B=zeros(3,4)——产生3×4阶全“0”矩阵
D=ones(3,4)——产生3×4阶全“1”的矩阵
X=magic(3)——产生3阶幻方
Y=vander(4)——产生4阶范德蒙矩阵
示例:
》eye(2,3)
ans=
100
010
》zeros(2,3)
ans=
000
000
》ones(2,3)
ans=
111
111
》V=[572];A=diag(V)
A=
500
070
002
》eye
(2)
ans=
10
01
》zeros
(2)
ans=
00
00
》ones
(2)
ans=
11
11
如果已知A为方阵,则V=diag(A)可以提取A的对角元素构成向量V。
D.通过提示语句输入矩阵或数组
x=input(‘prompt’),或;
x=input('prompt','s');
在屏幕上显示一个提示符,等待用户从键盘输入,并读取用户输入到工作空间中。
;
第一种方式供输入数字,而后一种方式供输入字符串。
;
示例:
例3-3
>>yourName=input('请输入您的姓名:
\n','s')
请输入您的姓名:
zhao
yourName=
zhao
>>yourAge=input('请输入您的年龄:
')
请输入您的年龄:
33
yourAge=
33
E.数据文件法
通过函数将其加载到工作空间中,从而恢复以前保存过的变量。
常用格式:
load-asciifilename %加载ascii码数据文件
load-matfilename %加载二进制数据文件
F.数组/矩阵元素的操作主要有提取(部分)元素、修改或赋值给(部分)元素值、删除(部分)元素及数组/矩阵的翻转等。
a)矩阵提取
MATLAB通过确认矩阵下标,可以对矩阵进行插入子块,提取子块和重排子块的操作。
A(m,n):
提取第m行,第n列元素
A(:
n):
提取第n列元素
A(m,:
):
提取第m行元素
A(m1:
m2,n1:
n2):
提取第m1行到第m2行和第n1列到第n2列的所有元素(提取子块)。
A(:
):
得到一个长列矢量,该矢量的元素按矩阵的列进行排列。
示例:
A=[269;428;351]
A=269
428
351
A(3,2)
ans=5
A(6)//等同A(3,2),列优先
ans=5
Sum(A(1:
3,3))//求第三列元素之和
b)矩阵的子矩阵可以通过向量、标量或冒号的标识来引用和赋值
>>A=magic(3)
A=
816
357
492
>>A1=A(1:
2:
3,[2,3])%对应1,3行,2,3列
A1=
16
92
>>A2=A(:
2:
end)%:
表示全部,end表示到最后一列
A2=
16
57
92
>>L1=logical([101]);%给出逻辑向量L1
>>L2=logical([110]);%给出逻辑向量L2
>>A3=A(L1,L2)%通过逻辑微量矩阵标识子矩阵,取出L1指定的1,3行和L2指定的1,2列
A3=
81
49
c)矩阵的大小
[m,n]=size(A,x):
返回矩阵的行列数m与n,当x=1,则只返回行数m,当x=2,则只返回列数n。
length(A)=max(size(A)):
返回行数或列数的最大值。
rank(A):
求矩阵的秩
示例:
》a=[123;345];
》[m,n]=size(a)
m=
2
n=
3
》length(a)
ans=
3
》max(size(a))
ans=
3
》rank(a)
ans=
2
d)数组的扩展
A=reshape(1:
9,3,3)
A=
147
258
369
A(5,5)=111
A=
14700
25800
36900
00000
0000111
A(:
6)=222
A=
14700222
25800222
36900222
00000222
0000111222
A=[[A;[135]][1;2;3;4]]
A=1471
2582
3693
1354
e)矩阵的一些特殊操作
矩阵的变维
a=[1:
12];
b=reshape(a,3,4)
c=zeros(3,4);c(:
)=a(:
)
b=
14710
25811
36912
c=
14710
25811
36912
reshape的使用演示
a=-4:
4
A=reshape(a,3,3)
a=
-4-3-2-101234
A=
-4-12
-303
-214
f)MATLAB下矩阵的运算
加减运算
加、减(A+B,A-B)或plus(A,b),minus(A,B)
示例:
a=[12;34];b=[35;59]
》c=a+bd=a-b
》c=d=
47-2-3
813-2-5
》a*b=[1323;2951]
除法运算
左除:
a\b运算等效于求a*x=b的解;
x=a-1b或x=mldivide(a,b);左边作为除数;
右除:
a/b运算等效于求x*b=a的解。
;
x=ba-1或x=mrdivide(a,b);右边作为除数;
一般A\B≠B/A
g)数组/矩阵翻转函数
B=rot90(A)
矩阵逆时针旋转90°
B=shiftdim(X,n)
矩阵的元素移位
B=flipud(A)
矩阵上下翻转
U=triu(X)
得到矩阵的上三角矩阵
B=fliplr(A)
矩阵左右翻转
L=tril(X)
得到矩阵的下三角矩阵
B=flipdim(A,dim)
矩阵的某维元素翻转
示例:
A=
-4-12
-303
-214
A.'
ans=
-4-3-2
-101
234
flipud(A)%上下
ans=
-214
-303
-4-12
fliplr(A)%左右
ans=
2-1-4
30-3
41-2
rot90(A)
ans=
234
-101
-4-3-2
h)四则运算与幂运算
》a=[12;34];b=[35;59]
》a*b=[1323;2951]
》a/b=[-0.500.50;3.50–1.50]
》a\b=[-1-1;23]
》a^3=[3754;81118]
》a.*b=[310;1536]
》a./b=[0.330.40;0.600.44]
》a.\b=[3.002.50;1.672.25]
》a.^3=[18;2764]
-只有维数相同的矩阵才能进行加减运算。
-a\b运算等效于求a*x=b的解;而a/b等效于求x*b=a的解。
只有方阵才可以求幂。
-点运算是两个维数相同矩阵对应元素之间的运算,在有的教材中也定义为数组运算。
i)数组乘方(.^)——元素对元素的幂
示例:
a=[123];b=[456];
z=a.^2
z=
1.004.009.00
z=a.^b
z=
1.0032.00729.00
j)矩阵的其它运算
inv——矩阵求逆
det——行列式的值
eig——矩阵的特征值
diag——对角矩阵
A’、A.’——矩阵转置
sqrt——矩阵开方
取整
floor(A)---取不足整数
ceil(A)----取过剩整数
round(A)---四舍五入
fix(A)------按0近方向取整
取余
rem(A,x)---A矩阵除以模数x后的余数
其他变换函数
[n,m]=rat(A):
有理数近似
mod(A,k)、rem(A,k):
求模与余数
gcd(n,m)、lcm(n,m):
最大公约数、最小公倍数
示例:
【例】找出数组中所有绝对值大于3的元素。
A=zeros(2,5);
A(:
)=-4:
5;
L=abs(A)>3
islogical(L)%returnstrueifLisalogicalarrayandfalseotherwise
X=A(L)
A=
-4-2024
-3-1135
L=
10001
00001
ans=
1
X=
-4
4
5
G.
注意:
在处理逻辑运算时,运算元只有两个值即0和1,所以如果指定的数为0,MATLAB认为其为0,而任何数不等于0,则认为是1。
0—不成立1—成立
示例:
设有:
A=[5-40-0.5]B=[0109]
&与
A&B=[0101]A&1=[1101]
|或
A|B=[1101]A|1=[1111]
~非
~A=[0010]~1=0
8.符号变量,生成符号对象的基本规则,创建
①什么是符号运算?
与数值运算的区别
数值运算中必须先对变量赋值,然后才能参与运算。
符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。
特点:
运算对象可以是没赋值的符号变量
可以获得任意精度的解
②符号变量与符号表达式
f='sin(x)+5x'
f——符号变量名
sin(x)+5x——符号表达式
''——符号标识
符号表达式一定要用''单引号括起来matlab才能识别。
③生成符号对象
a)sym函数
sym函数的主要功能是创建符号变量,以便进行符号运算,也可以用于创建符号表达式或符号矩阵。
用sym函数创建符号变量的一般格式为:
x=sym(‘x’)
其目的是将’x’创建为符号变量,以x作为输出变量名。
每次调用该函数,可以定义一个符号变量。
示例:
求方程的解析解。
解:
a=sym('a');%定义‘a’为符号运算量,输出变量名为a
b=sym('b');
x=sym('x');
y=sym('y');
[x,y]=solve(a*x-b*y-1,a*x+b*y-5,x,y)%以a,b为符号常数,x,y为符号变量
即可得到方程组的解:
x=3/a
y=2/b
syms函数
示例:
f=xn
g=sin(at+b)
中的系统默认变量。
symsabntx%定义符号变量
f=x^n;%给定符号函数
g=sin(a*t+b);
findsym(f,1)%在f函数中查询1个系统默认变量
ans=x
表示f函数中查询的1个系统默认变量为x
④符号矩阵的创建
数值矩阵A=[1,2;3,4]
A=[a,b;c,d]——不识别
用matlab函数sym创建矩阵(symbolic的缩写)
命令格式:
A=sym('[]')
※符号矩阵内容同数值矩阵
※需用sym指令定义
※需用''标识
示例:
A=sym('[a,2*b;3*a,0]')
A=
[a,2*b]
[3*a,0]
这就完成了一个符号矩阵的创建。
注意:
符号矩阵的每一行的两端都有方括号,这是与matlab数值矩阵的一个重要区别。
9.①MATLAB绘图函数,多图绘制,图区选择
A.二维绘图
1.plot——最基本的二维图形指令
函数格式:
plot(x,y)其中x和y为坐标向量
函数功能:
以向量x、y为轴,绘制曲线。
示例:
在区间0≤X≤2p内,绘制正弦曲线Y=SIN(X),其程序为:
x=0:
pi/100:
2*pi;
y=sin(x);
plot(x,y)
B.二维绘图一般步骤
数据准备
选定图形窗入子图位置
调用(高层)绘图指令
设置轴的范围与刻度、坐标分格线
图形注释
图形的精细修饰(图柄操作)
打印
C.多图绘制
a)输入多对参数
调用格式为:
plot(x1,y1,x2,y2,…,xn,yn)
当输入参数都为向量时,x1和y1,x2和y2,…,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。
每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。
示例:
x1=linspace(0,2*pi,100);
x2=linspace(0,3*pi,100);
x3=linspace(0,4*pi,100);
y1=sin(x1);
y2=1+sin(x2);
y3=2+sin(x3);
x=[x1;x2;x3]';
y=[y1;y2;y3]';
plot(x,y,x1,y1-1)
b)通过图形保持
holdon/off命令控制是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换。
示例:
y3=cos(t);y4=cos(t+0.25);y5=cos(t+0.5);
plot(t,y3);holdon;plot(t,y4);plot(t,y5);
c)通过图区分割
subplot(m,n,p)——子图分割命令
m-行n-列p-图形序号(从左到右,由上至下)
示例:
t=-pi:
0.3:
pi;y=1./(1+exp(-t));
subplot(221),plot(t,y);title('plot(t,y)')
subplot(222),stem(t,y);title('stem(t,y)')
subplot(223),semilogy(t,y);title('semilogy(t,y)')
subplot(224),stairs(t,y);title('stairs(t,y)')
d)多窗口绘制函数"figure"
figure(n)——创建窗口函数,n为窗口顺序号。
示例:
t=0:
pi/100:
2*pi;
y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5);
plot(t,y)%——自动出现第一个窗口
figure
(2)
plot(t,y1)%——在第二窗口绘图
figure(3)
plot(t,y2)%——在第三窗口绘图
②二维、三维网格、曲面,符号函数绘曲线图,曲面图,相空间曲线
这一栏目需要掌握曲线,曲面,网格的绘制.重点放在作业上。
A.符号函数绘曲线图(隐函数绘图)
函数
说明
函数
说明
ezplot(fun,[min,max])
二维曲线
ezsurf(fun,domain)
曲面图
ezplot3(funx,funy,funz,[tmin,tmax])
三维曲线
ezsurfc(fun,domain)
画带等位线的曲面图
ezpolar(fun,[a,b])
极坐标
ezmesh(fun,domain)
画网线图
ezcontourf(fun,domain)
填色
等位图
ezmeshc(fun,domain)
画带等位线的网线图
ezcontour(fun,domain)
等高线
示例:
subplot(2,2,1);
ezplot('x^2+y^2-9');axisequal
subplot(2,2,2);
ezplot('x^3+y^3-5*x*y+1/5')
subplot(2,2,3);
ezplot('cos(tan(pi*x))',[0,1])
subplot(2,2,4);
ezplot('8*cos(t)','4*sqrt
(2)*sin(t)',[0,2*pi])
B.三维绘图
plot3函数与plot函数用法十分相似,其调用格式为:
plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n)
其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。
当x,y,z是同维向量时,则x,y,z对应元素构成一条三维曲线。
当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。
类似于plot函数,plot3也可以绘制多条曲线,并可以分别对不同曲线进行修饰。
示例:
t=0:
pi/100:
20*pi;
x=sin(t);