matlabun.docx
《matlabun.docx》由会员分享,可在线阅读,更多相关《matlabun.docx(39页珍藏版)》请在冰豆网上搜索。
matlabun
第二章
利用:
生成等间隔的向量:
>>A=1:
0.5:
2
A=
1.0001.5002.000
利用:
选出矩阵指定行、列及元素
>>A=[147;258;369];
>>A(1:
3,2:
3)取行数为1~3,列数为2~3的元素构成子矩阵。
ans=
47
58
69
>>A(:
3)取所有的行数,列数为3的元素构成子构成子矩阵
ans=
7
8
9
linspace——产生一个线性间隔行矢量
y=linspace(x1,x2)
等间隔产生100维的行向量,使得y
(1)=x1,y(100)=x2
Y=linspace(x1,x2,n)
产生n维等间隔的行向量,使得y
(1)=x1,y(n)=x2
•>>Y=linspace(2,10,5)
•Y=
•246810
logspace——产生一个对数间隔行矢量
•y=logspace(x1,x2):
产生50维的行向量,使得
•y
(1)=10x1,y(50)=10x2
•y=logspace(x1,x2,n):
产生n维的行向量,使
•得y
(1)=10x1,y(n)=10x2
•y=logspace(1,4,4)
•y=10100100010000
rand——随机矩阵(0~1之间均匀分布)
•>>rand(2,2)
•ans=
•0.81320.1389
•0.00990.2028
zeros——全部元素都为0的矩阵
eye——单位矩阵
eye(2,4)eye(3)ans=ans=1000100
0100010
001
ones——全部元素都为1的矩阵
>>ones(2,3)
ans=
111
111
矩阵元素相乘“.*”:
A.*B
功能:
矩阵A和B的对应元素相乘;因此,A和B必须大小相同,或其中之一为标量
矩阵元素右除“A./B”与左除“A.\B”
矩阵元素右除“A./B”表示矩阵元素A(i,j)/B(i,j);
矩阵元素左除“A./B”表示矩阵B(i,j)/A(i,j),
因此,A和B必须行、列数相同,或者其中之一
为标量。
矩阵元素幂“.^”:
A.^B
A.^B表示矩阵元素A(i,j)的B(i,j)次幂,A与B必须大小相同,或者其中之一为标量。
矩阵右除“B/A”与左除“A\B”
如果A为一非奇异矩阵,则B/A与A\B可通过A的逆矩阵与B矩阵得到:
B/A=B*inv(A);A\B=inv(A)*B。
AX=BXA=B
X=A\BX=B/A
a^p——a自乘p次幂式中a为方阵,p>1且为整数。
对于p的其它值,计算将涉及特征值和特征向量,如果p是矩阵,a是标量a^p使用特征值和特征向量自乘到p次幂;如a,p都是矩阵,a^p则无意义。
a^B
a是一个标量
B是一个方阵
算法:
1、B可以分解为(P逆*C*P)
2、其中C是以B的特征值为对角线元素的对角阵。
那么:
a^B=P逆*a.^C*P
A’表示矩阵A的线性代数转置。
对于复矩阵,表示复共轭转置。
A.’表示非共轭转置;对于复矩阵,不包括共轭。
1表示关系式这“真”,即关系式正确;0表示该关系为“假”,即它不成立。
控制流
格式之一
if表达式
语句组A
end
格式之二:
if表达式
语句组A
else
语句组B
end
格式之三:
if表达式1
语句组A
elseif表达式2
语句组B
else
语句组C
end
switch选择表达式
case情况表达式1
语句组1
case情况表达式2
语句组2
………
otherwise
语句组n
end
while表达式
语句组A
end
fori=初值:
增量:
终值
语句组A
end
功能:
把语句组A(亦称为循环体)反复执行N次
。
循环次数N为:
N=1+(终值-初值)/增量
在每次执行时程序中的i的值按“增量”增加。
键盘输入命令input
格式一:
u=input(‘提示内容’)
在屏幕上显示提示内容,等待从键盘输入,将输入值赋给数据变量u
格式二:
u=input(‘提示内容’,‘s’)
在屏幕上显示提示内容,等待从键盘输入,将输入的符号以字符串赋给文本(字符串)变量u。
菜单输入命令menu
功能:
产生一个供用户输入的选择菜单。
格式:
k=menu(‘title’,‘选项1’,‘选项2’,,‘选项n’)
显示以字符串变量‘title’为标题的菜单,选择为字符
变量:
‘选项1’,‘选项2’,,‘选项n’,并将所输入的值赋给变量k。
k=menu('学生','张三','李四')
pause常用在M文件中,用于停止执行,直接按任意键继续执行;
pause(n) 暂停执行n秒后继续执行;
pauseon 允许一系列pause命令暂停程序执行;
pauseoff保证任何pause命令和pausea(n)语句不能暂停程序执行。
显示命令disp
功能:
显示指定的变量或变量的内容。
调用格式:
disp(变量名)
按格式要求输出变量
调用格式:
sprintf(显示格式,变量)。
sprintf('%s','hello')
文件输入输出命令与函数
格式一:
save
将工作空间中的所有变量保存在一个名为:
“matlab.mat”的二进制格式文件中,该文件可通过load命令来重新装入工作空间。
格式二:
save 文件名变量名
将工作空间中指定的“变量名”保存在指定“文件名.mat”的二进制格式文件中。
格式三:
save 文件名选项
使用“选项”指定的ASCII文件格式,将工作空间中所有变量保存到“文件名”所指定的文件中。
格式一:
load
将保存在“matlab.mat”文件中的所有变量调入到工作空间。
格式二:
load 文件名
从“文件名.mat”中调入变量,可给出全部路径。
fopen
功能:
打开文件或获得打开文件信息。
格式一:
f_id=fopen(‘文件名’,’允许模式’)
功能:
用指定的数据“格式”打开数据文件,返回文件标识
格式二:
[f_id,message]=fopen(文件名,’允许模式’,格式)
功能:
用指定的数据“格式”打开数据文件,返回文件标识和打开文件信息两个参数。
用格式指定“数据格式”。
如果fopen成功打开文件,则返回文件标识f_id,message内容为空,如果不能成功打开,则返回f_id值为-1,message中返回一个有助于判断错误类型的字符串。
有三个值是预先定义的,不能打开或关闭:
0:
表示标准输入,一直处于打开读入状态。
1:
表示标准输出,一直处于打开追加状态。
2:
表示标准错误,一直处于打开追加状态。
fclose
功能:
关闭一个或多个已打开的文件。
格式一:
status=fclose(f_id)
关闭指定文件,返回0表示成功,返回-1表示失败。
格式二 status=fclose(‘all’)
功能:
关闭所有文件,返回0表示成功,返回-1表示失败。
fread
格式一:
[A,count]=fread(f_id,size,’精度’)
功能:
从指定文件中读入二进制数据,将数据写入到
矩阵A中;可选输出count返回成功读入元素个
数;f_id为整数文件标识,其值由fopen函数得
到;可选参数size确定读入多少数据,如果不指
定参数size,则一直读到文件结束为止.
参数size合法选择有:
n:
读入n个元素到一个列向量;
inf:
读到文件结束,返回一个与文件数据元素相同的列向量;
[m,n]:
读入足够元素填充一个m×n阶矩阵,填充按列顺序进行,如果文件不够大,则填充0。
‘精度’表示读入数据精度的字符串,控制读入每个值的数据位,这些位可以是整数型、浮点值或字符。
[A,count]=fread(f_id,size,’精度’,skip)
可选参数skip,指定每次读操作跳过字节数,如果’精度’是某一种位格式,则每次读操作将跳过相应位数。
fwrite
功能:
向文件中写入二进制数据。
格式一:
count=fwrite(f_id,A,’精度’)
将矩阵A中元素写入指定文件,将其值转换为指定的精度。
格式二:
count=fwrite(f_id,A,’精度’,skip)
可用参数skip指定每次写操作跳过指定字节。
fscanf
格式一:
A=fscanf(f_id,’格式’)
从由f_id所指定的文件中读入所有数据,并根据’格式’字符串进行转换,并返回给矩阵A,’格式’字符串指定被读入数据的格式。
格式二:
[A,count]=fscanf(f_id,’格式’,size)
读入由size指定数量的数据,并根据’格式’字符进行转换,并返回给矩阵A,同时返回成功读入的数据数量count。
fprintf
格式一:
count=fprintf(f_id,’格式’,A,…)
将矩阵A或其它矩阵的实部数据以’格式’字符串指定的形式进行规格化,并将其写入指定的文件中,其返回值为写入数据的数量。
格式二:
fprintf(’格式’,A,…)
将A或其它值以’格式’给定的形式输出到标准输出-显示屏幕上。
基本数学函数
三角函数
正弦sin函数与反正弦函数asin函数
格式:
A=sin(X)sin(x+jy)=sin(x)+cos(y)+jcos(x)sin(y)
功能:
对矩阵或数组X的每个元素求正弦值,所有角度用弧度表示。
格式:
X=asin(A)
功能:
对于A的元素求反正弦值,结果为弧度。
余弦cos函数与反余弦函数acos函数
格式:
A=cos(X)
功能:
对矩阵或数组X的每个元素求余弦值,所有角度用
弧度表示。
格式:
X=acos(A)
功能:
对于A的元素求反余弦值,结果为弧度。
正切tan函数与反正切函数atan函数
格式:
A=tan(X)
功能:
对矩阵或数组X的每个元素求正切值,所有角度用弧度表示。
格式:
X=atan(A)
功能:
对于A的每个元素求反正切值,结果为弧度。
四象限反正切atan2函数
格式:
P=atan2(Y,X)
功能:
四象限反正切函数。
返回大小与Y、X相同的矩阵或数组,由Y和X对应元素的实部求反正切值得到,其中虚部忽略。
指数exp函数与自然对数log函数
格式:
A=exp(X)
功能:
返回X每个元素的以e为底的指数值。
格式:
X=log(A)
功能:
返回A的每个元素的自然对数。
2.常用对数logl0函数
格式:
X=logl0(A)
功能:
对A的每个元素求常用对数。
log2函数和幂函数pow2
格式:
X=log2(A)
功能:
对A的每个元素计算其以2为底的对数。
格式:
A=pow2(X)
功能:
A的元素为2对X每个元素求幂得到
平方根函数
格式:
A=sqrt(X)
功能:
返回对数组X每个元素求平方根的数组,如果元素为负或复数,则结果为复数。
求复数实部函数real
格式:
X=real(Z)
功能:
返回复数Z的每个元素的实部。
求复数的虚部函数imag
格式:
Y=imag(Z)
功能:
返回复数Z的每个元素的虚部。
绝对值和复数模函数abs
格式:
A=abs(Z)
功能:
返回Z每个元素的绝对值。
如果Z的元素是复数,则返回其模。
求相角函数angle
格式:
P=angle(Z)
功能:
对Z的每个元素求相角。
共轭函数conj
格式:
C=conj(Z)
功能:
对Z的每个元素求共轭复数。
向0方向取整数函数fix
格式:
I=fix(X)
返回X中每个元素的最靠近零的整数。
若X为复数,则分别对X的实部和虚部取整。
向-∞方向取整数函数floor
格式:
I=floor(X)
返回X中每个元素的最靠近该元素的最小整数。
若X为复数,则分别对X的实部和虚部取最小整。
向∞方向取整数函数ceil
格式:
I=ceil(X)
返回X中每个元素的最靠近该元素的最大整数。
若X为复数,则分别对X的实部和虚部取最大整数。
四舍五入取整数函数round
格式:
I=round(X)
返回X中每个元素的最靠近该元素的整数。
若X为复数,则分别对X的实部和虚部取整数。
模数余函数mod
格式:
M=mod(X,Y)mod(X,Y)=X-Y.*floor(X./Y)
返回X关于Y的余数。
除后余数函数rem
格式:
M=rem(X,Y)rem(X,Y)=X-Y.*fix(X./Y)
功能:
返回X关于Y的余数。
符号函数sign
格式:
s=sign(X)
如果X大于零,则返回1;如果X等于零,则返回0;如果X小于零,则返回-1。
如果X为复数,则算法为:
SIGN(X)=X./ABS(X)
基本绘图方法
figure命令
格式:
figure或figure(N)
功能:
创建一个图形窗口。
使编号为N的图形窗口成为当前图形窗口,即图形窗口处于可视状态。
如果窗口N不存在,则将创建一个句柄为N的图形窗口。
figure
(1)
clf命令:
清除当前图形窗口中的所有的内容
格式:
clf
close命令:
关闭图形窗口
格式一:
close或close(N)关闭当前图形窗口或指定编号N的图形窗口。
格式二:
closeall关闭所有图形窗口。
hold命令
格式:
holdon(off)
功能:
hold命令的功能就是保持当前图形窗的内容,使后续绘制函数仍可该图形窗口中完成绘图,实现一张图中绘制多个图形。
若再键入hold命令就解除冻结。
这种拉线开关式的控制有时会造成混乱,可以用holdon和holdoff命令来得到确定的状态。
subplot命令
功能:
将一个图形窗口划分为多个子图形窗口
格式:
subplot(m,n,p)或 subplot(nmp)
将图形窗口分成nm个子图形窗口,并选择第p个子图形窗口作为当前图形窗口,供绘制函数作图使用。
二维图形绘制命令plot
格式一:
plot(y)--输入一个数组的情况
功能:
1、如果y是一个数组,该二维图以y中元素的下标作为X坐标,y中元素的值作为Y坐标,一一对应画在X—Y坐标平面图上,而且将各点以直线相连。
2、y的元素是复数,则plot(y)等价于plot(real(y),imag(y)),其中real(y)是y的实部,imag(y)是y的虚部。
若y是矩阵,就按列绘制曲线,曲线的条数等于y矩阵的列数。
格式二:
plot(x,y)--输入两个数组的情况
功能:
绘出以x元素为横坐标、y元素为纵坐标的曲线。
数组x和y必须具有相同长度。
线型、标记符号及颜色的设置
为了设定线型、颜色以及标记符号,用户只需在plot的输入变量组后面,加一个引号,在引号内部放入线型、颜色以及标记符号的标志符即可完成。
格式一:
plot(y,’字符串’)
格式二:
plot(x,y,’字符串’)
图形的标注、网格以及图例说明
(1)添加图形标题命令title
格式:
title(‘string’)
功能:
在当前坐标系的顶部加一个文本串string,作为该图形的标题。
(2)添加坐标轴标志函数xlabe、ylabel、zlabel
格式:
xlabel(‘text’)或ylabel(‘text’)或
zlabel(‘text’)
功能:
给当前X轴或Y轴或Z轴标注文本标注。
设置网格线命令grid
格式:
gridon(off)
功能:
对当前坐标图加上网格线或撤消网格线。
若直接调用
grid命令即可设置或撤消网格线。
图形标注函数legend
格式:
legend(string1,string2,string3,….)
功能:
在当前图中添加图例。
格式:
Legendoff
功能:
撤消当前坐标图上的图例。
x=0:
0.2:
5;y=x;
figure
(1)
subplot(1,2,2)
plot(x,y)
subplot(1,2,1)
plot(x,sin(x));subplot(1,2,1)
title('sin函数')
xlabel('x轴')
ylabel('y轴')
subplot(1,2,2)
title('line函数')
xlabel('x2轴')
ylabel('y2轴')
subplot(1,2,2)
gridon
坐标轴的形式与刻度
(1)设置坐标轴函数axis
格式一:
axis([xmin,xmax,ymin,ymax])
功能:
对当前二维图形对象的X轴和Y轴进行标定。
格式二:
axis([xminxmaxyminymaxzminzmax])
功能:
对当前三维图形对象的X、Y和Z轴进行标定。
格式三:
axisoff(on)
功能:
使坐标轴、刻度、标注和说明变为不显示(显示)状态。
格式四:
axis(‘manual’)
功能:
将冻结当前的坐标比例,以后的图形均以此比例绘出。
对数坐标轴命令semilogx、semilogy、loglog
格式:
semilogx(…..)
功能:
在X轴上采用常用对数来进行标定。
该命令的调用格式与plot函数的调用格式相同。
格式:
semilogy(…..)
功能:
在Y轴上采用常用对数来进行标定。
该命令的调用格式与plot函数的调用格式相同。
极坐标函数polar
格式:
polar(theta,rho)
功能:
绘制极角为theta,极径为rho的极坐标图形。
格式:
polar(theta,rho,s)
功能:
绘制由S指定样式、颜色的极坐标图形。
图形边框控制命令box
格式:
boxon(off)
对所绘制的图形添加图形边框(默认状态),或关闭图形边框。
boxonboxoff
二维图形其它的相关函数命令
(1)获取函数ginput
格式:
[X,Y]=ginput(N)
功能:
从当前的坐标图上获得N个点的数据,并返回这N个点的相应X、Y坐标向量。
指针可以由鼠标或键盘上的除回车以外的任意键来进行输入,回车键是用来在N个数
据点输完以前强行停止输入的。
图形填充函数fill
格式:
fill(X,Y,C)
功能:
填充二维多边形,多边形由向量X,Y来定义,填充的色由C来确定。
说明:
1、多边形的顶点是由一组X,Y元素来确定,必要时应组成一个闭合的曲
线。
2、C可从’r’,’g’,’b’,’c’,’m’,’k’选出一种色填充也可以是一个GRB向量[r,g,b],用它来确定所填充的色。
y=0:
0.2:
2*pi;
fill(y,sin(y),'r')
多条曲线的绘制
1.使用plot(t,[y1,y2,…])命令
该语句中t是向量,y=[y1,y2…]是矩阵,若t是列(行)向量,则y的列(行)长应与t长度相同。
Y的列(行)数就是曲线的条数。
2.使用hold(on/off)命令
在画完前一张图形后,用hold命令保持住该图形窗口中的内容,再画下一条曲线。
3.利用plot(x1,y1,x2,y2,….,xn,yn)语句
在该语句中,x1,y1,x2,y2,….,xn,yn等分别为向量对。
每一对X-Y向量可以绘出一条图线,这样就可以在一张图上画出多图线,每一组向量对的长度可以不同,在其后面都可加线型标志符。
4使用plotyy命令:
plotyy(x1,y1,x2,y2)
它设有两个坐标,左纵坐标对应y1,右纵坐标对应y2,以便绘制两个y尺度不同的变量,但x仍用同一个比例尺。
复数的绘图
当plot(z)中的z为复数变量时(即含有非零的虚部),MATLAB把复数的实部作为横坐标、虚部作为纵坐标绘图,即相当于plot(real(z),imag(z))。
第三章
Matlab数据类型
变量和常量
变量(包括函数)的命名规则:
由英文字母、数字和下划线混合组成,不得包含空格和标点;第一个字符必须是英文字母,最多包括31个字符;对字母的大小写敏感。
局部变量和全局变量
永久变量(常量)
只能在某一函数体内使用,而不能从其他函数和Matlab工作空间访问的变量,就是局部变量。
在几个函数及Matlab函数中都能使用的变量就是全局变量。
(全局变量名应尽可能大写,并由globe声明)
数字变量
Matlab内部的每一个数据元素都是用双精度数(double)来表示和存储的。
变量输出时用户可以用format命令设置或改变输出格式。
字符串
所有字符串都用单引号括起来。
>>s='matlab'
字符中的每个字符(包括空格)都是字符串变量(矩阵或向量)中的一个元素。
字符串中的字符以ASCII码形式储存并区分大小,用函数abs可以看到字符的ASCII码。
在Matlab中,字符串和字符矩阵基本上是等价的。
>>s=['matlab']等价于>>s='matlab'
>>A='China''中国'''
A=
China'中国'
>>B='我是好学生'
B=
我是好学生
>>ab=[A,'',B,'.']
ab=
China'中国'我是好学生.
>>b=num2str
(2) ;数字转换为字符串
b=
2
>>b*2
ans=ASCII码相乘
100
>>str2num(b)*2
ans=
4
s3=char(‘l’,‘i’);
s3=
l
i
>>abs(s3');字符的ASCII码值
ans=
111108
单元型变量
单元型变量是一种比较特殊的数据类型,本质上讲,单元型变量实际上是一种以任意形式的数据为元素的多维数组。
单元型变量可以存放任何类型、任何大小的数据,其大小是不定的。
>>clear;A=[1,2;3,4]
A=
12
34
>>B={1:
4,A,'abcd'}
B=
[1x4double][2x2double]'abcd'
B为单元型变量(用花括号)
冒号“:
”
可以用来产生向量;用作矩阵的下标,部分地选择矩阵元素;进行行循环操作。
续号“…”表示一行未完,而在下一行继续;
分号“;”
在方括号中,表示矩阵中行的结尾;用在每行的结尾,则不显示该行运算的结果。
MATLAB的关系操作符运算法则:
当两个变量是标量a和b时
◆若a、b之间关系成立,则关系运算结果为1;
◆若a、b之间关系不成立,则关系运算结果为0;
当两个维数相同的矩阵A和B比较时,矩阵A、B比较的是相同位置的元素,按标量的运算规则逐个进行。
关系运算的结果是一个和A维数相同的矩阵,它的元素由0和1组成。