Matlab复习资料.docx
- 文档编号:27505511
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:43
- 大小:86.99KB
Matlab复习资料.docx
《Matlab复习资料.docx》由会员分享,可在线阅读,更多相关《Matlab复习资料.docx(43页珍藏版)》请在冰豆网上搜索。
Matlab复习资料
Matlab复习资料
(内部资料)
山东农业大学信息学院
2010年1月
Matlab复习资料
一、基本概念、命令、语句格式、程序结构
1.MATLAB是一种用于科学工程计算的高级语言,其基本的数据单位是矩阵,它的命令表达式与数学、工程中常用的习惯表达形式十分相似;
2.MATLAB高效方便的矩阵和数组运算,使之在数字信号处理、建模、系统识别、自动控制、优化等领域的问题时,显得十分简洁、高交,具有其他高级语言不可比拟的优势;
3.MATLAB的典型应用包括以下几个方面:
数学计算、算法设计、建模与仿真、数据分析与可视化、科学及工程绘图和应用开发;
4.MATLAB最显著的特点是其基本数据是不需要定义大小的数组;
5.MATLAB语言是以矩阵和向量为基本数据单位,包括控制流程语句、函数、数据结构、输入输出及面向对象等特点的高级语言;
6.MATLAB的工作空间指运行MATLAB的所有变量和MATLAB提供的常量构成的空间;
7.在命令窗口中键入who和whos命令可以看到目前工作空间里的所有变量,命令clear可以删除工作空间里的变量;
8.MATLAB用“%”实现注释功能;可以把多条命令放在同一行,只要中间用逗号或分号隔开,逗号告诉MATLAB显示结果;分号说明除了这一条命令外还有下一条命令等待输入,MATLAB这时将不会给出运行的中间结果;
9.MATLAB的“类”目录名都以@符为引导,其上存放“类构造”函数和“重载”函数;
10.用path命令扩展的搜索路径仅在当前MATLAB环境下有效;
11.MATLAB有两种最常用的创建数组的方式:
“冒号表示形式”直接定义数据点之间的增量而不是数据点;linspace直接定义数据点数,而不是数据点之间的增量;
12.MATLAB数组中以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素;另:
MATLAB的数组存储,也表现在绝对索引上,是按从上到下、从左到右的顺序进行的。
13.点乘符号.*对数组c和d施加元素对元素的乘法运算,不带点的乘号表示矩阵乘法;
14.数组除法同时使用了正斜杠和反斜杠两种定义:
两种情况下,斜杠下的数组都被斜杠上的数组所除;
15.B.\A表示对应元素相除;
16.reshape函数用于在总元素不变的前提下,改变数组的“行数”、“列数”;
17.为了生成比较复杂的数组,MATLAB提供了诸如反转、插入、提取、收缩、重组等对数组和矩阵的操作方式;
18.函数find用于返回数组或矩阵中满足某关系表达式的那些元素的位置或下标;
19.可用命令class和ischar来查看变量是否为字符数组;
20.采用输入数值矩阵的方法输入字符矩阵时,应保证矩阵的每行字符串的长度相同;
21.函数cellstr可把字符矩阵转换成元胞数组;
22.函数mat2str把数值数组组转换为字符串,用eval函数又可把这种字符串转换成数值数组;
23.元胞数组的每一个元素可为类型不同、维数不同的矩阵、向量、标量或多维数组,所有元素用大括号括起来;
24.中括号对“[]”用来形成矩阵,大括号对“{}”是元胞数组的标志。
两者不同之处在于,大括号可以嵌套,而中括号不可;
25.函数celldisp用来显示元胞数组的每个元素的值,函数cellplot将画出元胞数组的每个元素的结构图;
26.当给已经定义的元胞数组下标范围外的元素赋值时,MATLAB自动扩维,对于没有赋值的元素,赋值为空矩阵;
27.在赋值语句中,每次只能给元胞数组的一个元素赋值,采用形如“a{1,:
}=…”的赋值语句是不合法的;
28.结合使用冒号运算和大括号可以方便地引用元胞数组中的多个元素,并把引用的元素分为不同的变量;
29.数据不能直存放于结构体,而只能存放在域中。
结构体的域可以存放任何类型、任何大小的数组;
30.在矩阵下标的表达式里使用冒号表示矩阵的一部分,如A(:
j)表示矩阵A的第j列的所有元素。
由于有了冒号运算符,在MATLAB里编程变得特别简便、快捷;
31.在MATLAB里,可通过把矩阵的列或行赋值为空矩阵来删除某行或某列;
32.A(1:
2:
5)表示删除下标为1、3、5的三个元素;
33.在MATLAB里,当行向量乘以列向量时为标量积(内积),当列向量乘以行向量时为向量积(外积);
34.函数cond(A)计算矩阵的条件数;
35.[V,D]=eig(A)求特征值与特征向量;
36.det(A)计算行列式;
37.Inv(A)求矩阵的逆;
38.poly(A)求特征多项式;
39.函数polyfit从最小二乘的意义上,拟合出所给数据的多项式系数;
40.x(any(isnan(x)'),:
)=[]作用是删除所有包含NaN的行;
41.any(x)的功能是:
如果在一个向量x中,任何元素是非零,返回1;
42.all(x)的功能是:
如果在一个向量x中,所有元素非零,返回1;
43.函数工作空间变量nargin包含输入参量个数,函数工作空间变量nargout包含输出参量个数;
44.局部(local)变量是存在于函数空间内部的中间变量,产生于该函数的运行过程中,其影响范围也仅限于该函数本身;
45.全局(global)变量是在不同的工作空间以及基本工作空间中可以被共享的变量;
46.私有函数只能被private目录的直接父目录上的M函数文件所调用;
47.数值数组的预定维一般采用zeros函数,元胞数组预定维采用cell函数,结构型数组用struct函数预定维;
48.clear命令从内存中删除变量;
49.pack命令把内存中的变量存入磁盘,再用内存中的连续空间载回这些变量;
50.在MATLAB里,对象是用结构体数组来存储的;
51.函数figure可建立新的图形窗口,并把新建的窗口指定为当前窗口用于输出图形;
52.命令subplot可以把多个图形绘在一个图形窗口中;
53.命令what列出当前目录或文件夹下的所有M文件和MAT文件;
54.help、lookfor等命令都不能提供关于私有函数的任何帮助信息;
55.MATLAB还提供了两种演算函数来提高计算的灵活性:
一种是串演算函数eval,另一种是函数句柄演算函数feval;
56.编程时,把循环向量化,不但能缩短程序的长度,更能提高程序的执行效率;
57.在MATLAB里运行C语言的可执行文件,应在文件名前加上感叹号“!
”;
58.函数meshgrid(x,y)对y中行的每一行复制x,同样也对x中列的每一列复制y;
59.MATLAB提供了一个称为fplot的巧妙的绘图函数,该函数细致地计算要绘图的函数,并且确保在输出的图形中表示出所有的奇异点;
60.在图形窗口里,legend、zoom、ginput都响应鼠标的单击。
二、MATLAB矩阵运算基础
创建行矢量:
在一对方括号中输入元素,并用空格或是逗号分隔开。
创建列矢量:
使用分号分割开。
转置运算符('),若数组中包含复数元素,那么产生复共轭转置。
可以使用点转置运输符(.'),所有元素是实数,它们的运算结果相同。
数组索引:
行号总是列在前面。
V(:
2:
4)表示矩阵中第二列,到第五列的所有元素。
通过让矩阵的某些行或列赋值空数组,就可以删除相应的行或列。
A([14],:
)=[];删除矩阵A的第1行和第4行。
多维数组前二维是行和列,较高维称为页。
创建三维数组的一个方法是使用cat命令。
C=cat(3,A,B),可以任务C由两层数组构成,第一层是A,第二层是B。
1在MATLAB中如何建立矩阵
,并将其赋予变量a?
>>a=[573;491]
2有几种建立矩阵的方法?
各有什么优点?
可以用四种方法建立矩阵:
①直接输入法,如a=[2573],优点是输入方法方便简捷;
②通过M文件建立矩阵,该方法适用于建立尺寸较大的矩阵,并且易于修改;
③由函数建立,如y=sin(x),可以由MATLAB的内部函数建立一些特殊矩阵;
④通过数据文件建立,该方法可以调用由其他软件产生数据。
3在进行算术运算时,数组运算和矩阵运算各有什么要求?
进行数组运算的两个数组必须有相同的尺寸。
进行矩阵运算的两个矩阵必须满足矩阵运算规则,如矩阵a与b相乘(a*b)时必须满足a的列数等于b的行数。
4数组运算和矩阵运算的运算符有什么区别?
在加、减运算时数组运算与矩阵运算的运算符相同,乘、除和乘方运算时,在矩阵运算的运算符前加一个点即为数组运算,如a*b为矩阵乘,a.*b为数组乘。
5计算矩阵
与
之和。
>>a=[535;374;798];
>>b=[242;679;836];
>>a+b
ans=
777
91413
151214
6求
的共轭转置。
>>x=[4+8i3+5i2-7i1+4i7-5i;3+2i7-6i9+4i3-9i4+4i];
>>x’
ans=
4.0000-8.0000i3.0000-2.0000i
3.0000-5.0000i7.0000+6.0000i
2.0000+7.0000i9.0000-4.0000i
1.0000-4.0000i3.0000+9.0000i
7.0000+5.0000i4.0000-4.0000i
7计算
与
的数组乘积。
>>a=[693;275];
>>b=[241;468];
>>a.*b
ans=
12363
84240
8“左除”与“右除”有什么区别?
在通常情况下,左除x=a\b是a*x=b的解,右除x=b/a是x*a=b的解,一般情况下,a\bb/a。
9对于
,如果
,
,求解X。
>>A=[492;764;357];
>>B=[372628]’;
>>X=A\B
X=
-0.5118
4.0427
1.3318
10已知:
,分别计算a的数组平方和矩阵平方,并观察其结果。
>>a=[123;456;789];
>>a.^2
ans=
149
162536
496481
>>a^2
ans=
303642
668196
102126150
11
,
,观察a与b之间的六种关系运算的结果。
>>a=[123;456];
>>b=[8–74;362];
>>a>b
ans=
010
101
>>a>=b
ans=
010
101
>>a
ans=
101
010
>>a<=b
ans=
101
010
>>a==b
ans=
000
000
>>a~=b
ans=
111
111
12
,在进行逻辑运算时,a相当于什么样的逻辑量。
相当于a=[11011]。
13在sin(x)运算中,x是角度还是弧度?
在sin(x)运算中,x是弧度,MATLAB规定所有的三角函数运算都是按弧度进行运算。
14角度
,求x的正弦、余弦、正切和余切。
>>x=[304560];
>>x1=x/180*pi;
>>sin(x1)
ans=
0.50000.70710.8660
>>cos(x1)
ans=
0.86600.70710.5000
>>tan(x1)
ans=
0.57741.00001.7321
>>cot(x1)
ans=
1.73211.00000.5774
15用四舍五入的方法将数组[2.45686.39823.93758.5042]取整。
>>b=[2.45686.39823.93758.5042];
>>round(b)
ans=
2649
16将矩阵
、
和
组合成两个新矩阵:
(1)组合成一个43的矩阵,第一列为按列顺序排列的a矩阵元素,第二列为按列顺序排列的b矩阵元素,第三列为按列顺序排列的c矩阵元素,即
;
(2)按照a、b、c的列顺序组合成一个行矢量,即
>>a=[42;57];
>>b=[71;83];
>>c=[59;62];
%
(1)
>>d=[a(:
)b(:
)c(:
)]
d=
475
586
219
732
%
(2)
>>e=[a(:
);b(:
);c(:
)]'
e=
452778135692
或利用
(1)中产生的d
>>e=reshape(d,1,12)
ans=
452778135692
三、重要函数/命令/变量
clc 清空命令窗口
clear 从工作空间(计算机内存)中删除变量
closeall关闭(删除)全部图形窗口
load从磁盘中调入数据变量
save把内存变量存入磁盘
function函数文件头
global定义全局变量
input提示键盘输入
format 格式化显示命令窗口输出信息
cumsum 阵列累计和
diag 方阵的对角线;创建对角阵
dot 两向量的点积
end 阵列最后项的指针
find 满足逻辑表达式的阵列索引和阵列值
length 向量长度
size 阵列的阶次或长度
min 确定阵列中的最小值
max 确定阵列中的最大值
rank 确定矩阵线性无关的行或列值
eig 矩阵特征方程的特征值和特征向量
det 方阵行列式
inv 方阵的逆
poly特征多项式
plot 应用线型坐标绘制平面曲线
mesh 绘三维网线图
sum 计算阵列元素的和值
mean计算阵列元素的均值
var计算阵列元素的方差
std计算阵列元素的标准差
corrcoef相关系数矩阵
sym定义基本符号对象
syms定义基本符号对象
!
执行外部应用程序
基本矩阵(Elementarymatrices)
eye单位矩阵
ones所有元素全为1的矩阵
zeros所有元素全为0的矩阵
rand均匀分布随机阵
randn正态分布随机阵
compan伴随矩阵
magic 创建任意行和列的和值相等的方阵
meshgrid用于三维曲面的分格线坐标
linspace线性等分向量
logspace对数等分向量
repmat铺放模块数组
信息显示(Messagedisplay)
disp显示矩阵和文字内容
display显示矩阵和文字内容的重载函数
error显示错误信息
fprintf把格式化数据写到文件或屏幕
sprintf按格式把数字转换为串
控制语句(Controlflow)
break终止最内循环
case同switch一起使用
catch同try一起使用
continue将控制转交给外层的for或while循环
else同if一起使用
elseif同if一起使用
end结束for,while,if语句
for按规定次数重复执行语句
if条件执行语句
otherwise可同switch一起使用
return返回
switch多个条件分支
trytry-cathch结构
while不确定次数重复执行语句
特殊变量
ans用于结果的缺省变量名
pi圆周率
eps计算机的最小数,当和1相加就产生一个比1大的数
flops浮点运算数
inf无穷大,如1/0
NaN不定量,如0/0
i,ji=j=
nargin所用函数的输入变量数目
nargout所用函数的输出变量数目
realmin最小可用正实数
realmax最大可用正实数
时间和日期(Timeanddates)
clock时钟
cputmeMATLAB占用CPU时间
date日期
etime用CLOCK计算的时间
now当前时钟和日期
pause暂停
tic计时开始
toc计时终止和显示
符串操作(Stringoperations)
ischar若是字符串则为真
isletter串中是字母则为真
isspace串中是空格则为真
isempty若是空矩阵则为真
isequal若对应元素相等则为1
islogical若是逻辑数则为真
isnumeric若是数值则为真
int2str将整数转换为字符串
str2num将字符串转换为数值
lower把字符串变成小写
upper把字符串变成大写
MATLAB取整和求余函数(Roundingandremainder)
ceil朝正无穷大方向取整
fix朝零方向取整
floor朝负无穷大方向取整
mod模数求余
rem求余数
round四舍五入取整
sign符号函数
文件输入/输出(Fileinput/output)
fopen打开文件
fclose关闭文件
fread从文件中读取二进制数据
fwrite把二进制数据写到文件里
fscanf从文件中读入格式化数据
fprintf把规格化数据写到文件或屏幕
fgetl读文件的行,忽略回车符
fgets读文件的行,包括回车符
exist检查文件是否存在
ferror查询文件I/O的错误状态
feof测试文件是否结束
fseek设置文件位置指示符
ftell获取文件位置指示符
frewind返回到文件开始
delete删除磁盘文件
微积分(Calculus)
diff求导数
limit求极限
int计算积分
jacobianJacobian矩阵
symsum符号序列的求和
trylorTrylor级数
方程求解(SolutionofEquation)
dsolve求解符号常微分方程
finverse求反函数
fminunc拟牛顿法求多元函数极值点
fsolve解非线性方程组
lsqnonlin解非线性最小二乘问题
solve求解方程组
四、M文件编程
1命令文件与函数文件的主要区别是什么?
(1)命令文件是一系列命令的组合,函数文件的第一行必须用function说明;
(2)命令文件没有输入参数,也不用返回参数,函数文件可以接受输入参数,也可以返回参数;
(3)命令文件处理的变量为工作空间变量,函数文件处理的变量为函数内部的局部变量,也可以处理全局变量。
2如何定义全局变量?
用关键字global可以把一个变量定义为全局变量,在M文件中定义全局变量时,如果在当前工作空间已经存在了相同的变量,系统将会给出警告,说明由于将该变量定义为全局变量,可能会使变量的值发生改变,为避免发生这种情况,应该在使用变量前先将其定义为全局变量。
3如果x是一个结构型数组,如何观察其中的内容?
结果数组用于存储一组相关的数据元素(域),这些元素可以是不同类型、不同尺寸的,结构数组不能用数组编辑器观察和修改其中的元素。
对于明为x的结构型数组,可以直接键入x以观察其中所包含的域名及内容,也可以键入x.域名观察指定域名的内容,例如
>>x
x=
name:
'line'
color:
'red'
data:
[12.700035.90008.400012.200016.600018.800026.2000]
>>x.color
ans=
red
4if语句有几种表现形式?
(1)if表达式
语句体
end
(2)if表达式
语句体1
else
语句体2
end
(3)if表达式1
语句体1
elseif表达式2
语句体2
end
(4)if表达式1
语句体1
elseif表达式2
语句体2
else
语句体3
end
5说明break语句和return语句的用法。
break语句用于终止for循环和while循环的执行。
如果遇到break语句,则退出循环体,继续执行循环体外的下一行语句。
在嵌套循环中,break只存在于最内层的循环中。
return语句用于终止当前的命令序列,并返回到调用的函数或键盘,也用于终止keyboad方式,在MATLAB中,被调用的函数运行结束后会自动返回调用函数,使用return语句时将return插入被调用函数的某一位置,根据某种条件迫使被调用函数提前结束并返回调用函数。
6有一周期为4的正弦波上叠加了方差为0.1的正态分布的随机噪声的信号,用循环结构编制一个三点线性滑动平均的程序。
(提示:
①用0.1*randn(1,n)产生方差为0.1的正态分布的随机噪声;②三点线性滑动平均就是依次取每三个相邻数的平均值作为新的数据,如x1
(2)=(x
(1)+x
(2)+x(3))/3,x1(3)=(x
(2)+x(3)+x(4))/3……)
t=0:
pi/50:
4*pi;
n=length(t);
y=sin(t)+0.1*randn(1,n);
ya
(1)=y
(1);
fori=2:
n-1
ya(i)=sum(y(i-1:
i+1))/3;
end
ya(n)=y(n);
plot(t,y,'c',t,ya,'r','linewidth',2)
7编制一个解数论问题的函数文件:
取任意整数,若是偶数,则用2除,否则乘3加1,重复此过程,直到整数变为1。
functionc=collatz(n)
%collatz
%Classic“3n+1”Ploblemfromnumbertheory
c=n;
whilen>1
ifrem(n,2)==0
n=n/2;
else
n=3*n+1;
end
c=[cn];
end
8有一组学生的考试成绩(见表),根据规定,成绩在100分时为满分,成绩在90~99之间时为优秀,成绩在80~89分之间时为良好,成绩在60~79分之间为及格,成绩在60分以下时为不及格,编制一个根据成绩划分等级的程序。
学生姓名
王
张
刘
李
陈
杨
于
黄
郭
赵
成绩
72
83
56
94
100
88
96
68
54
65
Name=['王','张','刘','李','陈','杨','于','黄','郭','赵'];
Marks=[72,83,56,94,100,88,96,68,54,65];
%划分区域:
满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(<60)。
n=length(Marks);
for
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 复习资料