控制语句
MATLAB 常用的控制语句有for, while, if, switch 等。
一、循环语句
通过循环控制语句,可以重复执行代码块。循环有两类:for 循环和while 循环。
for 循环是一组语句重复固定的,指定的次数,while 循环是满足条件执行。
1.for 循环
循环特定次数,并通过递增的索引变量跟踪每次迭代。
for 循环的典型结构如下:
for x=lower_bound:step:upper_bound
group of statements
end
循环变量为x,表达式lower_bound:step:upper_bound 给循环变量赋值,循环变量从初始值lower_bound 开始,步长为step 进行递增。如果step 为1 可以省略。循环索引
lower_bound:step:upper_bound 相当于一个数组。在每一次循环执行期间,循环变量执行一次,直到循环变量超过终止值upper_bound 为止。end 语句标志着循环执行语句的结束。
简单示例:
2.while 循环
只要条件仍然为true 就进行循环,事先并不知道循环的执行次数。
while 循环的典型结构如下:
while expression
group of statements
end
逻辑表达式expression 为真,则执行语句,直到逻辑表达式为假时终止。当表达式始终为真,循环则会无限的执行下去。在while 循环之前,循环变量有一个初始值,在执行过程中,循环变量的值被改变。
简单示例:
break 和continue 语句
使用break 语句可以在循环变量达到终止值之前跳出循环,break 命令可以终止循环。
使用continue 语句跳到循环的下一次迭代。
二、条件语句
条件语句可用于在运行时选择要执行的代码块。条件语句中包含一个或者多个if,else,elseif 语句。可以根据真/假(布尔)表达式有条件地控制1 个或多个命令的执行。
1. if 语句
if 语句的基本结构是:
if expression
group of statements
end
每一个if 语句以end 语句作为结束。
如果有两种选择,使用if 和else 语句,基本结构如下:
if expression
statements1
else
statements2
end
如果有多个选择,使用if 和elseif 语句,基本结构如下:
if expression1
statements1
elseif expression2
statements2
else
statements3
end
2.switch 语句
除了if, elseif, else 语句之外还可以使用switch 语句。switch 语句也可以用if 结构编写。
switch 语句执行多组语句中的一组。
switch 语句基本结构如下:
switch switch_expression
case case_expression
statements1
case case_expression
statements2
...
otherwise
statementsn
end
输入表达式switch_expression 与每一个case 进行比较,如果bool 值时1,则执行case语句之后的语句statements。如果没有相应的case,则执行otherwise 语句之后的语句,如果没有otherwise 语句,则执行end 之后的语句。
数组操作
数组可分为:空数组,向量(一维数组),二维数组,多维数组。标量是只有一个元素的数组,向量是只有一行或者一列的数组,也称为一维数组。矩阵是二维的数组,可以看作
是几行或者几列合并在一起的向量。
矩阵的数学含义是一个空间的线性变换,拉伸、旋转、缩放、反射的结合。
矩阵的运算,矩阵和矩阵相乘的本质是坐标系的线性变换,矩阵和向量相乘的本质是向量的线性变换。
一、矩阵基本操作
1.创建
矩阵是二维数组,具有多行多列。矩阵是按行进行书写,每一行以分号进行分隔,每一
列以逗号或者空格进行分隔。三种书写方式等价。(…)符号可以在使用空格处使用。例如,A= [1 2 3; 4 5 6];
创建了一个二维数组。
矩阵可以通过内置函数创建,函数zeros(m,n)可以创建m* n 的全零矩阵。
函数ones(m,n)可以创建m *n 的全1 矩阵。
2.获取元素
A(i,j)是第i 行第j 列的元素。
指定行和列的范围,A(m:n,k:l)是m 到n 行,k 到l 列的范围的元素。
以冒号:作为索引为指定矩阵的所有行或所有列。
A(m:n,:)是m 到n 行,所有列的范围的元素。
A(:,k:l))是所有行,k 到l 列的范围的元素。
3.矩阵赋值
获取矩阵的尺寸,size(A,1)是矩阵A 的第一位,size(A,2)是矩阵的第二个维度。
当第一次指定矩阵时,如果矩阵未存在,未指定的元素被赋值为零。
B(2,3)=5;
4.空矩阵
零行零列的矩阵为空矩阵,x=[]。
5.删除元素
利用空矩阵删除矩阵的元素,将矩阵的元素设置为[],即可删除元素。
A(:,1)=[]; % 删除矩阵的第一列所有元素
A(2,:)=[]; % 删除矩阵的第二行所有元素
6.矩阵重排
函数reshape()可以实现数组的重排。函数reshape()可以改变数组的形状,reshape(A,m,n)
可以将矩阵重排为m* n 的矩阵,重构前后的元素个数相同。
例如,将数组A 重构为5*2 的数组。
矩阵可以被重排成向量,按列重排
7.矩阵转置、旋转、翻转
矩阵A 的转置为A’。
矩阵的旋转可以利用函数rot90(A,k)将矩阵A 旋转90 度,k 为旋转90 度的倍数。
矩阵的翻转可以利用函数fliplr()将矩阵左右翻转或者函数flipud()将矩阵进行上下翻转。
8.矩阵扩充
列向量u,行向量v 可以通过以下方式对A 的列进行扩充和行进行扩充。
A=[A u]
A=[A; v]
9.特殊矩阵
魔方矩阵,使用magic()函数进行创建,每行、每列以及两条对角线上的元素和相等。
希尔伯特矩阵,使用hilb()函数创建。
稀疏矩阵,使用sparse()函数创建,使用稀疏存储的方式进行创建。
二、矩阵运算
1.矩阵的加减法
如果矩阵A 和B 有相同的维度,矩阵A+B, A-B 是相应位置上的元素进行加减。
矩阵与标量进行加减,是将矩阵的每一个元素与标量进行加减。
矩阵与标量相乘,是将矩阵的每一个元素与标量进行相乘。
2.矩阵的乘法
矩阵的乘法A *B,需要满足矩阵A 的列数与B 的行数相等,C=A *B,矩阵C 的行数等于A 的行数,列数等于B 的列数。
矩阵的乘法可以使用循环的方式得到相乘后的每一个元素。
3.矩阵的除法
- MATLAB 中的左除号与右除号的区别,左除号(\),右除号(/)。
- /:右除:A/B 表示矩阵A 乘以矩阵B 的逆。
- \:左除:A\B 表示矩阵A 的逆乘以B。解方程AX=B,X=A\B,相当于inv(A)*B。
- ./:右除:A./B 表示矩阵A 中的每个元素除以矩阵B 的对应的元素。
- .\:左除:A.\B 表示矩阵B 中的每个元素除以矩阵A 的对应的元素。
三、矩阵分析
1.矩阵的逆
函数inv()可以计算矩阵的逆,例如,B=inv(A); 矩阵B 为矩阵A 的逆。
函数pinv()可以计算矩阵的伪逆,矩阵A 不是方阵或者是一个非满秩的方阵,B=pinv(A);
矩阵B 为矩阵A 的伪逆,也称为广义逆矩阵。
2.矩阵的行列式
函数det()可以计算方阵的行列式。
3.矩阵的秩和迹
函数rank()可以计算矩阵的秩,矩阵的秩是矩阵线性无关的行数和列数。
函数trace()可以计算矩阵的迹,矩阵的迹是特征值之和,矩阵的对角线元素之和。
4.矩阵的范数
函数norm()可以计算矩阵的范数,默认为2-范数。
norm(A,1)为矩阵的1-范数,norm(A,2)为矩阵的2-范数,norm(A,inf)为矩阵的∞范数。
5.矩阵的条件数
函数cond(A,1)计算矩阵A 在1-范数下的条件数,函数cond(A,2)计算矩阵A 在2-范数下的条件数,函数cond(A,inf)计算矩阵A 在∞范数下的条件数。
6.矩阵特征值和特征向量
函数eig(A)用来计算矩阵特征值,[V,D]=eig(A)为矩阵A 的全部特征值构成对角矩阵D,
特征向量构成矩阵V 的列向量。
四、向量运算
向量的逐元素乘积:u.* v=[u1* v1 u2*v2 u3 v3…]
向量的逐元素除法:u./v=[u1/v1 u2/v2 u3/v3…]
向量的逐元素指数运算:u.v=[u1v1 u2v2 u3v3…]
向量的内外积:列向量x,内积为x ’ * x,外积为xx’
五、标量与向量
标量c 只是一个(实数或复数)数值,维度为1*1 的矩阵。
向量v 是一个既有大小又有方向的对象,向量也称为线性数组或线性矩阵,是一个维度长度为1,另一维度长度大于1 的矩阵。
向量分行向量和列向量,行向量的每个数值用逗号或空格隔开,列向量的每个数值用分号隔开。
向量的分量数决定了向量所在空间的维数。
向量的长度由2-范数给出,用函数norm()计算。
符号运算
符号运算是集成到符号数据箱中允许在MATLAB 环境中以富豪的方式执行运算。
符号运算可以计算微分、积分、极限、求和、矩阵求逆、行列式、特征值、化简代数表达式、方程求解等。
符号对象是符号工具箱中定义的一种数据类型,符号对象是符号的字符串表示,符号对象用于表示符号变量、表达式和方程。
一、符号变量与符号表达式
符号变量的生成
使用函数sym 和syms 生成一个或者多个符号对象。
(1)函数sym
生成单个字符符号变量。
x = sym(‘x’) 创建一个符号变量x,变量的内容是x,表达式是x。
(2)函数syms
一次性生成多个符号变量,但是不能用于生成表达式。
syms 函数的输入参数必须以字母为开头,只包含字母和数字。
syms arg1 arg2…定义多个符号变量。
相当于arg1=sym(‘arg1’);arg2=sym(‘arg2’);…
函数subs
将符号表达式中的符号变量用数值代替。
符号方程的生成
二、符号表达式化简
多项式有多种表达式,函数simplify 可以实现符号表达式的化简。
三、符号运算
1.符号微分
函数diff 用来求符号表达式的微分.
diff(S)求表达式S 的导数;
diff(S,n)求表达式S 的n 阶导数;
diff(S,’v’)求表达式S 对变量v 的导数。
2.符号积分
函数int 用于实现符号微分运算。
int(S)求表达式的不定积分;
int(S,v)求表达式S 对自变量v 的不定积分;
Int(S,a,b)求表达式S 在区间[a,b]内的定积分;
Int(S,v,a,b)求表达式S 自变量v 在区间[a,b]内的定积分。
3.符号矩阵计算
4.符号多项式的根
四、符号函数图形
函数fplot 可以绘制显函数或者隐函数的图形,也可以绘制参数方程的图形。
五-符号方程求解
solve 函数用于求解代数方程和方程组。
g=solve(eq);求解方程eq 的解;
g=solve(eq, var);求解方程eq 的解,对指定自变量求解。
g=solve(eq1, eq2,…,eqn);求解方程组eq1, eq2,…,eqn 的解;
g=solve(eq1, eq2,…,eqn, var1, var2, …, varn);求解方程组eq1, eq2,…,eqn 的解,对指定自变量var1, var2, …, varn 求解。
绘图
绘图将数据可视化,更直观的了解数据的属性。
MATLAB 绘图是在图形窗口中绘制的,在图形窗口中可以对图形进行操作,如绘制图形和编辑图形。
一、图形窗口
创建图形窗口可以通过figure 函数进行创建,调用格式如下:
figure,创建图形窗口。
figure(h),创建句柄为h 的图形窗口,图形对象的名字为句柄。
h=figure(),返回图形窗口的句柄。
gcf 返回当前Figure 对象的句柄值。
gca 返回当前axes 对象的句柄值。
set 函数可以设置图形窗口的属性。set(handle)列出句柄值为handle 的对象的所有属性。
查看窗口的全部属性,get(gca)
二、基本图形绘制
1.二维图形的绘制
(1)plot 函数
plot(Y),如果Y 是向量,绘制以Y 的值为纵坐标,向量索引为横坐标的图形。
plot(x,y),绘制以x 为横坐标,y 为纵坐标的图形。
plot(X,Y,LineSpec) 使用指定的线型、标记和颜色创建绘图。
(2)绘制多个线条
plot(X1,Y1,…,Xn,Yn) 在同一组坐标轴上绘制多对x 和y 坐标。此语法可替代将坐标指定为矩
阵的形式。
plot(X,Y) 当X,Y 都为矩阵时,以X 的各列为横坐标,Y 各列为纵坐标,在同一组坐标轴上绘
制多对x 和y 坐标。绘制多条Y=[Y1;…;Yn]为矩阵的形式。
(3)线型、标记、颜色
(4)添加标题、坐标轴标注、图例
添加标题: 使用title 函数,title(‘string’)在图形中添加标题,标题内容为string 字符串指定。
添加坐标轴标注:使用xlabel、ylabel 函数,xlabel(‘string’),ylabel(‘string’)内容由string 字符
串指定。
添加图例:通过legend 函数添加图例,legend(‘string1’,‘string2’,…),图例的文本由string1、
string2 等指定,字符串顺序与图形绘制顺序对应。
(5)fplot 函数
fplot(f) 在默认区间[-5 5](对于x)绘制由函数y = f(x) 定义的曲线。
fplot(f,xinterval) 将在指定区间绘图。绘制区间指定为[xmin xmax]。
2.图形操作
(1) 图形保持
hold on;打开图形保持功能。
hold off:关闭图形保持功能。
hold:改变当前的图形保持状态,在打开和关闭之间切换。
(2) 图形子窗口
subplot(m,n,p)、subplot(mnp):将图像分为m*n 个子区域,在第p 个区域绘制图形,并返回
该坐标系的句柄。
subplot(h):在由句柄h 指定的坐标系中绘制图形。
h=subplot():指定绘制子区域,并返回句柄h。
(3) 坐标轴控制
axis([xmin xmax ymin ymax]):指定当前图像中的x 轴和y 轴的范围。
axis tight:设置坐标轴的范围为数据的范围。
axis off:隐藏坐标轴及所有相关标记。
axis on:显示坐标轴及所有相关标记。
axis auto:自动选择坐标轴范围。
axis equal:沿每个坐标轴使用相同的数据单位长度。
box off:隐藏当前坐标轴下的边界线。
box on:显示当前坐标轴下的边界线。
grid off:隐藏当前坐标轴下的网格线。
grid on:显示当前坐标轴下的网格线。
close all:关闭所有窗口。
eps:表示从1.0 到下一个最大双精度数的距离,2^(-52)。
(4) 对数坐标系绘图
semilogx:x 轴采用对数刻度的半对数坐标系绘图函数。
semilogy:y 轴采用对数刻度的半对数坐标系绘图函数。
loglog:x 轴和y 轴都采用对数刻度的半对数坐标系绘图函数。
(5) 散点图
scatter(x,y) 在向量x 和y 指定的位置创建一个包含圆形标记的散点图。
3.三维图形的绘制
(1) 三维曲线图
plot3 函数用于绘制三维曲线。
plot3(X,Y,Z),X,Y,Z 为向量或者矩阵,X,Y,Z 为长度相同的向量,绘制由线段连接的一组坐标。
X,Y 或Z 中的至少一个指定为矩阵,其他指定为向量,绘制多组坐标。
plot3(X1,Y1,Z1,…,Xn,Yn,Zn) 在同一组坐标轴上绘制多组坐标。
(2) 三维曲面图
mesh 函数,绘制一个三维网格图,该网格图为三维曲面,有实色边颜色,无面颜色。该函数将矩阵Z 中的值绘制为由X 和Y 定义的x-y 平面中的网格上方的高度。边颜色因Z 指定的高度而异。
meshgrid 函数经常在绘制三维图像中使用,用于生成二维网格坐标的矩阵数据。
[X,Y] = meshgrid(x,y) 基于向量x 和y 中包含的坐标返回二维网格坐标。产生以向量x 的长度为矩阵的列数,向量y 的长度为矩阵的行数的X 和Y 矩阵。X 是一个矩阵,每一行是x 的一个副本;Y 也是一个矩阵,每一列是y 的一个副本。坐标X 和Y 表示的网格有length(y)个行和length(x) 个列。
surf 函数,绘制三维表面图,它是一个具有实色边和实色面的三维曲面。该函数将矩阵Z 中的值绘制为由X 和Y 定义的x-y 平面中的网格上方的高度。曲面的颜色根据Z 指定的高度而变化。
3.特殊图形的绘制
(1)条形图
bar 函数可以用于绘制柱状图,bar 和barh 分别绘制纵向和横向图形。
bar(Y):对Y 绘制条形图,如果Y 为矩阵,Y 的每一行聚集在一起,横坐标表示矩阵的行数,纵坐标表示矩阵元素值的大小。
bar(x,Y):对绘制横坐标为x 的条形图。
(2)面积图
area 函数用于绘制填充图,向量构成的曲线。
area(X,Y) 绘制Y 中的值对x 坐标X 的图。然后,该函数根据Y 的形状填充曲线之间的区域。
(3)饼状图
饼状图用于显示每个元素占总体的百分比。pie 函数绘制饼状图。
pie(X),绘制X 的饼状图,X 的每个元素占一个扇形。
(4)直方图
直方图可以直观显示数据的分布情况,是哟个histogram 函数可以绘制直方图。
histogram(X):基于X 创建直方图。histogram 函数使用自动分bin 算法,然后返回均匀宽度的bin,这些bin 可涵盖X 中的元素范围并显示分布的基本形状。histogram 将bin 显示为矩形,这样每个矩形的高度就表示bin 中的元素数量。
histogram(X,nbins):使用标量nbins 指定的bin 数量。
(5)离散数据图
stem(Y) 将数据序列Y 绘制为从沿x 轴的基线延伸的针状图。各个数据值由终止每个针状图的圆指示。
stem(X,Y) 在X 指定的值的位置绘制数据序列Y。X 和Y 输入必须是大小相同的向量或矩阵。另外,X 可以是行或列向量,Y 必须是包含length(X) 行的矩阵。
(6)等值线图
contour(Z),绘制矩阵Z 的等值线,绘制时将Z 在x-y 平面上进行插值,等值线数量和数值由系统根据Z 自动确定。
contour(Z,n),绘制矩阵Z 的等值线,等值线数目为n。
5.特殊字符
常用的特殊字符和控制字符串如标所示。以控制字符串的形式输入,如“\alpha”将字符串转换为特殊字符α。
3.添加注释
(1) 添加标题
使用title 函数,title(‘string’)
(2) 添加坐标轴标注
使用xlabel 函数、ylabel 函数为x 轴和y 轴添加坐标轴标注。
(3) 添加图例
使用legend 函数添加图例,每条曲线生成一个标志,标志包括线型示例,标记和颜色。
legend(‘string1’,’string2’, …)在图像中添加图例,由string1、string2 等指定。
(4) 添加文本
使用text 函数,创建文本对象,能够在指定位置添加文本注释。
text(x,y,’string’)指定位置x 坐标y 坐标,string 为待添加的文本内容。
文件和数据的处理
一、数据的基本操作
1.文件存储
使用save 函数可以保存工作区中的所有变量或者指定变量。
save:将工作区中的所有变量保存到当前工作区的文件中,文件名为matlab.mat。
save(‘filename’):将工作区中的所有变量保存为文件,文件名由filename 指定。
save(‘filename’,’var1’,’var2’,…):保存指定变量到filename 指定的文件中。
2.数据导入
使用load 函数导入数据。
load:导入matlab.mat 文件的所有变量,如果文件不存在则返回error。
load filename:将filename 中的全部变量导入到工作区中。
load filename X Y Z…:将filename 中的变量X、Y、Z 等导入到工作区。
使用whos -file 查看文件中的内容。
使用importdata 函数导入数据。
importdata(‘filename’):将filename 中的数据导入到工作区中。
A=importdata(‘filename’):将filename 中的数据导入到工作区中,并保存为变量A。
二、文件的操作
fprintf(formatSpec,A1,…,An) 设置数据的格式并在屏幕上显示结果。
formatSpec - 输出字段的格式
输出字段的格式,使用格式化操作符指定。格式化操作符以百分号% 开头,以转换字符结尾。转换字符是必需的。可以在% 和转换字符之间指定标识符、标志、字段宽度、精度和子类型操作符。
1.转换字符
浮点数宽度和精度指定
%6f 指定数字的宽度
%6.2f 指定数字的宽度和精度
%.2f 指定数字的精度
2.标志
文章来源:https://www.toymoban.com/news/detail-459874.html
3.转义符
文章来源地址https://www.toymoban.com/news/detail-459874.html
到了这里,关于MATLAB--控制语句--数组操作--符号运算--绘图--文件和数据的处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!