西工大matlab考试知识点整理.docx
《西工大matlab考试知识点整理.docx》由会员分享,可在线阅读,更多相关《西工大matlab考试知识点整理.docx(40页珍藏版)》请在冰豆网上搜索。
西工大matlab考试知识点整理
1.
p=[2,0,-3,71,-9,13];%建立多项式系数向量
x=roots(p);%求根
2.
a=[2,3,-1;8,2,3;45,3,9];%建立系数矩阵a
b=[2;4;23];%建立列向量b
x=inv(a)*b
3.基本运算
sin(45*pi/180)
sqrt(2*exp(4.92+0.5)+1)
4.常用命令
命令含义
clc清除命令窗口的显示内容
clear清除Matlab工作空间中保存的变量
who或whos显示Matlab工作空间中的变量信息
dir显示当前工作目录的文件和子目录清单
cd显示或设置当前工作目录
type显示指定m文件的内容
help或doc获取在线帮助
quit或exit关闭/推出MATALB
5.matlab组成
菜单栏、工具栏、文件编辑窗口、命令窗口、工作空间、历史命令窗口、命令提示符、Start菜单
6.MATLAB提供的帮助信息有两类
简单纯文本帮助信息
Help
lookfor(条件比较宽松)例:
inverse
窗口式综合帮助信息(文字、公式、图形)
Doc
helpwin
7.符号计算
symsxyz%建立符号变量
[x,y,z]=solve(2*x+3*y-z-2,8*x+2*y+3*z-4,45*x+3*y+9*z-23)
8.求解定积分
求解I=
quad('x.*log(1+x)',0,1)
或
symsx
nt(x*log(1+x),0,1)
ans=
9.多项式曲线拟合
x=[1,2,3,4,5,6,7,8,9,10]
y=[1.2,3,4,4,5,4.7,5,5.2,6,7.2]
注:
一次多项式拟合:
p1=polyfit(x,y,1)
三次多项式拟合:
p3=polyfit(x,y,3)
plot原始数据、一次拟合曲线和三次拟合曲线
x2=1:
0.1:
10;
y1=polyval(p1,x2)
y3=polyval(p3,x2)
plot(x,y,’*’,x2,y1,‘:
’,x2,y3)
10.复数及其运算
MATLAB中复数的表达:
z=a+bi,其中a、b为实数。
MATLAB把复数作为一个整体,象计算实数一样计算复数。
11.矩阵是Matlab最基本的数据对象,并且矩阵的运算是定义在复数域上的。
12.Matlab程序控制结构
顺序结构
分支结构
if-then-else语句
if<判断语句>
语句1
end
if<判断语句>
语句1
else语句2
end
switch-case语句
switch<判断值>
case判断值1
语句1
case判断值2
语句2
…
otherwise
语句n
end
循环结构
for-end语句
for循环控制变量=起始值:
步长:
终止值
循环体
end
while-end语句
while<循环判断语句>
循环体
end
其他语句
break和continue语句
break:
跳出循环
continue:
提前结束当前循环
return语句:
终止程序
try-catch语句:
异常处理
13.M文件(函数文件)
建立、编辑、保存、调用
14.创建一维数组变量
行:
第一种方法:
使用方括号“[]”操作符
>>a=[13pi3+5*i]%ora=[1,3,pi,3+5*i]
a=1.00003.00003.14163.0000+5.0000i
第二种方法:
使用冒号“:
”操作符
>>b=1:
10%x=Start:
Increment:
End
b=12345678910
第三种方法:
利用函数linspace
函数linspace的基本语法
x=linspace(x1,x2,n)
该函数生成一个由n个元素组成的行向量;
x1为其第一个元素;
x2为其最后一个元素;
x1、x2之间元素的间隔=(x2-x1)/(n-1)。
如果忽略参数n,则系统默认生成100个元素的行向量
键入并执行x=linspace(1,2,5)
x=1.00001.25001.50001.75002.0000
第四种方法:
利用函数logspace
列:
使用方括号“[]”操作符,使用分号“;”分割行。
键入并执行x=[1;2;3]
X=1
2
3
15.创建二维数组变量
第一种方法:
使用方括号“[]”操作符
键入并执行a2=[123;456;789]
a2=
123
456
789
第二种方法:
函数方法
函数ones(生成全1矩阵)、zeros(生成全0矩阵)、reshape
reshape的使用演示
>>a=-4:
4
a=
-4-3-2-101234
>>b=reshape(a,3,3)
b=
-4-12
-303
-214
单下标的使用
>>a=zeros(2,5);
>>a(:
)=-4:
5
a=
-4-2024
-3-1135
注意数组的排列顺序。
16.元素与子数组的寻访与赋值
一维数组元素与子数组的寻访与赋值:
>>a=linspace(1,10,5)
a=
1.00003.25005.50007.750010.0000
>>a(1:
3)%寻访前3个元素组成的子数组
>>a([125])%寻访a的第1、2、5个元素组成的子数组
>>a(3:
-1:
1)%由前3个元素倒序构成的子数组
>>a([12355321])
ans=
1.00003.25005.500010.000010.00005.50003.25001.0000
数组元素可以被任意重复访问,构成长度大于原数组的新数组。
二维数组元素与子数组的寻访与赋值:
>>a_2=zeros(2,4)%创建2x4的全0数组
a_2=
0000
0000
>>a_2(:
)=1:
8
a_2=
1357
2468
>>a_2([258])%单下标方式寻访多个元素
ans=
258
>>a_2([258])=[102030]
a_2=
13207
104630
>>a_2(:
[23])=ones
(2)%双下标方式寻访并修改
a_2=
1117
101130
size函数返回变量的大小,即变量数组的行列数
length函数返回变量数组的最大维数
sub2ind函数-双下标转换为单下标
>>sub2ind(size(A),2,1,2)
ind2sub函数-双下标转换为单下标
>>[I,J]=ind2sub(size(b),IND)
17.矩阵算术运算
运算运算符含义说明
加+相应元素相加
减-相应元素相减
乘*矩阵乘法
点乘.*相应元素相乘
幂^矩阵幂运算
点幂.^相应元素进行幂运算
左除或右除\或/矩阵左除或右除
左点除或右点除.\或./A的元素被B的对应元素除
18.Matlab提供了6种关系运算符:
<、>、<=、>=、==、~=(不等于)
P=rem(A,3)==0%被3除,求余
Matlab提供了3种逻辑运算符:
&(与)、|(或)、~(非)
算术运算优先级最高,逻辑运算优先级最低。
19.求向量的最大值和最小值:
(1)y=max(X):
返回向量X的最大值存入y,如果X中包含复数元素,则按模取最大值;
(2)[y,I]=max(X):
返回向量X的最大值存入y,最大值的序号存入I,如果X中包含复数元素,则按模取最大值。
求矩阵的最大值和最小值:
求矩阵A的最大值的函数有3种调用格式,分别是:
(1)max(A):
返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值;
(2)[Y,U]=max(A):
返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号;
(3)max(A,[],dim):
dim取1或2。
dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。
求最小值的函数是min,其用法和max完全相同。
求和与求积:
sum(X):
返回向量X各元素的和。
prod(X):
返回向量X各元素的乘积。
sum(A):
返回一个行向量,其第i个元素是A的第i列的元素和。
prod(A):
返回一个行向量,其第i个元素是A的第i列的元素乘积。
sum(A,dim):
当dim为1时,该函数等同于sum(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素之和。
prod(A,dim):
当dim为1时,该函数等同于prod(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素乘积。
平均值与中值:
求数据序列平均值的函数是mean,求数据序列中值的函数是median。
两个函数的调用格式为:
mean(X):
返回向量X的算术平均值。
median(X):
返回向量X的中值。
mean(A):
返回一个行向量,其第i个元素是A的第i列的算术平均值。
median(A):
返回一个行向量,其第i个元素是A的第i列的中值。
mean(A,dim):
当dim为1时,该函数等同于mean(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的算术平均值。
median(A,dim):
当dim为1时,该函数等同于median(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的中值。
20.字符串
1)Matlab用「单引号」来界定一个字符串。
可以使用方括号“[]”直接连接多个字符串变量,得到一个新字符串变量。
str1=‘IlikeMATLAB,’;%建立字串变量str1
str2='JavaScript,andPerl!
';%建立字串变量str2
str3=[str1str2]%直接连接str1及str2,以建立str3
str3=IlikeMATLAB,JavaScript,andPerl!
2)如要输入的字符串中有单引号,则由两个连续的单引号来表示。
若要计算字符串变量的长度(即组成字符串的个数),可用length指令。
sentence='I''vegotadate!
';
length(sentence)%计算字字符串sentence的长度
3)double指令:
查看字符串变量的存储內容(即ASCII内码)
char指令:
将ASCII內码转换为字符串形式
sentence='I''vegotadate!
';
sentenceAscii=double(sentence)%查看sentence的ASCII码
sentence2=char(sentenceAscii)%将ASCII码恢复成字符串形式
4)class或ischar指令:
可以用来判断一个变量的类型或它是否为字符串变量。
chinese=‘今日事,今日毕';
out1=class(chinese)%out1的值是“char”
x=chinese+1;
out2=ischar(x)%out2的值是0,代表x不是字符串变量
21.一个字符数组变量存储多行字符串
1)第一种方法是使用二维字符数组(TwoDimensionalCharacterArrays)
必须先确认每个字符串(即每一行)的长度一样,否则就必须在短字符串结尾补齐空格
departments=[‘ee’;‘cs’;‘econ’]
注意上述语句中空格字符的使用。
departments=
ee
cs
econ
2)用char指令存储多字符串
departments=char(‘ee’,‘cs’,‘econ’)%注意空格及「,」的使用
3)从二维字符数组访问字符串时,切记要使用deblank指令来清除字符串尾部的空格字符
departments=char('ee','cs','econ');
dept1=departments(1,:
);%(1,:
)代表第一行的全部元素
dept2=deblank(dept1);%使用deblank指令清除尾部的空格字符
len1=length(dept1)%显示变量dept1的长度=4
len2=length(dept2)%显示变量dept2的长度=2
22.字符串的操作
strcmp指令:
用于比较字符串的內容的异同
不相等返回0,相等返回1
out1=strcmp(str1,str2)%比较字符串str1和str2
23.空数组(emptyarray)
有一维是0的数组即为空数组
空数组不占据存储空间
最简单的空数组:
0x0的矩阵
复杂的空数组:
0x5or10x0
例如:
>>a=[];b=ones(0,5);
察看空数组:
>>a,b,c%orwhosabc
空数组并非全0数组
数组维数的减小
删除数组的某列和行
>>a=magic(4),a(:
2)=[]
删除(2-D、3-D)数组的单个元素
使用“全下标”方式,不能删除单个元素
>>a(1,2)=[]%系统会警告信息
使用“单下标”可以删除单个元素
>>a(2:
4)=[]%数组a将变为向量
使用“[]”同样可以减小字符数组的维数
24.元胞数组(cellarray)
1)赋值语句创建元胞数组
元胞索引(cellindexing)方式
格式:
a(1,2)={………}
元胞内容索引(contentindexing)方式
格式:
a{1,2}=[…]or‘…’
直接用大括号一次把所有元素括起来
b={'JamesBond',[12;34;56];pi,ones(5)}
2)Cellindexing方式创建元胞数组
>>a(1,1)={[143;058;729]};
>>a(1,2)={'AnneSmith'};
>>a(2,1)={3+7i};
>>a(2,2)={-pi:
pi/10:
pi};
“{}”表示空元胞数组
3)Contentindexing方式创建元胞数组
>>b{1,1}='JamesBond';
>>b{1,2}=[12;34;56];
>>b{2,1}=pi;
>>b{2,2}=zeros(5);
4)元胞数组的连接
c=[ab]%orc=[a;b]
5)cell函数创建元胞数组
>>b=cell(2,3)
b=
[][][]
[][][]
>>whosb
NameSizeBytesClass
b2x324cellarray
注意:
每个cell占有4个字节的空间
6)celldisp显示元胞数组的全部内容(3种)
>>a
>>celldisp(a)%显示全部内容
>>cellplot(a)%图形方式显示元胞数组的结构
使用内容下标索引显示指定元胞的数据
格式:
var_name{row_index,column_index}
或var_name{:
}
7)读取元胞数组中的内容
读取上述b元胞数组的第1行、第2列元胞的内容
>>b,d=b{1,2}
读取b{1,2}的第3行、第1列的数据。
>>e=b{1,2}(3,1)
读取元胞数组a第1行的所有元胞。
>>f=a(1,:
)
删除元胞数组a第1行的所有元胞。
>>a(1,:
)=[]
Note:
这里使用的是元胞索引(cellindexing),而不是内容索引(contentindexing)
25.结构与结构数组的概念
结构(structure)
由字段(或域,fields)组成
每个字段可以是任一种Matlab数据类型的数据或变量
与C语言的结构类型相似
结构数组(structurearray)
多个结构构成结构数组(structurearray)
结构数组的元素就是一个结构
26.结构数组变量的创建
1)方法一:
直接键入
>>clearstudent%清除student变量
>>student.name='张三';%加入name字段
>>student.id='mr871912';%加入id字段
>>student.scores=[58,75,62];%加入scores字段
>>student%显示结构变量的数据
student=
name:
'张三'
id:
'mr871912'
scores:
[58,75,62]
此时,Matlab视student为一个1x1结构数组
第二个学生的信息建立
>>student
(2).name='张宁';%加入name字段
>>student
(2).id='mr871913';%加入id字段
>>student
(2).scores=[68,85,92];%加入scores字段
此时,student变量已成为一个1x2的结构数组
2)方法二:
struc函数
>>clearstudent
>>student=struct('name','张听说','scores',[5060]);
>>student
(2)=struct('name','张廷安','scores',[6070]);
>>student
(1),student
(2)%显示student
(1),student
(2)
ans=
name:
'张听说'
scores:
[5060]
ans=
name:
'张廷安'
scores:
[6070]
或
使用struct创建结构数组变量(一次建立多个元素)
>>clearstudent
>>student=struct('name',{'张听说','张廷安'},'scores',{[5060],[6070]});
>>student
(1),student
(2)%显示student
(1),…
ans=
name:
'张听说'
scores:
[5060]
ans=
name:
'张廷安'
scores:
[6070]
3)结构数组嵌套(nested)
结构数组中结构的字段还可以是结构。
4)访问结构数组变量的内容
cat函数:
排列结构数组某字段的值
格式:
cat(dim,structurefield)
dim=1,竖排;dim=2,横排
Exam:
>>cat(1,student.scores)
ans=
5560
6580
>>cat(2,student.scores)
ans=
55606580
5)计算平均值(使用mean函数)
计算每次考试的平均值
>>average1=mean(cat(1,student.scores))
average1=
6070
27.plot指令的基本调用格式
(1)plot(x)
x为向量时,以该元素的下标为横坐标、元素值为纵坐标绘出曲线
x为实数二维数组时,则按列绘制每列元素值相对其下标的曲线,曲线数等于x数组的列数。
x为复数二维数组时,则按列分别以数组的实部和虚部为横、纵坐标绘制多条曲线
(2)plot(x,y)
x、y为同维数组时,绘制以x、y元素为横纵坐标的曲线
x为向量,y为二维数组、且其列数或行数等于x的元素数时,绘制多条不同颜色的曲线
x为二维数组,y为向量时,情况与上相同,只是y仍为纵坐标。
x=0:
pi/100:
2*pi;
y=2*exp(-0.5*x).*sin(2*pi*x);
plot(x,y)
或
t=-pi:
pi/100:
pi;
x=t.*cos(3*t);
y=t.*sin(t).^2;
plot(x,y)
(3)plot(x1,y1,x2,y2,…)
绘制以x1为横坐标、y1为纵坐标的曲线1,以x2为横坐标、y2为纵坐标的曲线2,等等。
其中x为横坐标,y为纵坐标,绘制y=f(x)函数曲线。
(4)多次叠绘
多次调用plot命令在一幅图上绘制多条曲线,需要hold指令的配合。
holdon保持当前坐标轴和图形,并可以接受下一次绘制。
holdoff取消当前坐标轴和图形保持,这种状态下,调用plot绘制完全新的图形,不保留以前的坐标格式、曲线。
(5)双纵坐标:
plotyy指令
plotyy指令调用格式:
plotyy(x1,y1,x2,y2)
x1-y1曲线y轴在左,x2-y2曲线y轴在右。
(6)多子图
subplot(m,n,k)
使(m*n)幅子图中第k个子图成为当前图
subplot(‘postion’,[left,bottom,width,height])
在指定的位置上开辟子图,并成为当前图
(7)分格线与grid指令
gridon画出分格线
gridoff不画分格线
MATLAB的缺省设置是不画分格线;分格线的疏密取决于坐标刻度(改变坐标刻度,可改变分格线的疏密)。
(8)坐标框
boxon控制加边框线
boxoff控制不加边框线
(9)刻度设置
指令及格式:
set(gca,‘xtick’,xs,‘ytick’,ys)
xs、ys可以使任何合法的实数向量,用于分别设置x、y轴的刻度。
28.图形标识
(1)图形标识包括:
图名(title)
坐标轴名(xlabel、ylabel)
图形文本注释(text)
图例(legend)
(2)简捷使用格式
title(s)%s为字符串变量或常量
xlabel(s)
ylabel(s)
legend(s)
text(x,y,s)%指定坐标(x,y)处加注文字
(3)直方图(柱形图)bar
垂直直方图
累计式
year=[1990199520