Matlab程序设计基础.docx
《Matlab程序设计基础.docx》由会员分享,可在线阅读,更多相关《Matlab程序设计基础.docx(25页珍藏版)》请在冰豆网上搜索。
![Matlab程序设计基础.docx](https://file1.bdocx.com/fileroot1/2022-12/15/c9f0f432-4931-4489-a3dd-f91051d97c76/c9f0f432-4931-4489-a3dd-f91051d97c761.gif)
Matlab程序设计基础
数据类型
取值范围
转换函数
Signed8-bitinteger
-27to27-1
int8
Signed16-bitinteger
-215to215-1
int16
Signed32-bitinteger
-231to231-1
int32
Signed64-bitinteger
-263to263-1
int64
Unsigned8-bitinteger
0to28-1
uint8
Unsigned16-bitinteger
0to216-1
uint16
Unsigned32-bitinteger
0to232-1
uint32
Unsigned64-bitinteger
0to264-1
uint64
表1.整型数据取值范围
Matlab默认变量
常量名
常量值
i,j
虚数单位,定义为
pi
圆周率
eps
浮点运算的相对精度
realmin
最小的浮点数
realmax
最大的浮点数
Inf
无穷大
NaN
Not-a-Number,表示不确定值
2.2.2
1,设定字符串
用‘’
表2字符串常用函数及其功能表
函数
功能
函数
功能
size
查看字符数组的维数
abs
查找一个字符的ASSII码
char
把数字按照ASCII码转化为字符串
strcat
字符串连接strcat(水平连接)strvcat(垂直连接)
strcmp
比较字符串
strrep
替换字符串
strcmpi
忽略大小写比较字符串
upper
转换为大写
strncmp
比较字符串的前n个字符
lower
转换为小写
findstr
在一个字符串中查找另一个字符串
strtok
返回字符串中第一个分隔符(空格,回车和Tab键)前的部分
strjust
对齐字符数组,包括左对齐,右对齐和居中
blanks
产生空字符串
stematch
查找匹配的字符串
deblank
删除字符串的空格
MATLAB程序基本语句
程序分支控制语言
1.if/else语句
if语句的语法形式如下所示:
ifexpression
statements1
elseexpression
statements2
end
当expression的结果为真时,执行statement1中的语句,否则执行statement2中的语句。
当有多个选择时,可以使用if/elseif语句。
if/elseif语句的语法如下所示:
ifexpression
statements1;
elseifexpression
statements2;
elseexpression
statements3;
end
例如:
functionmath(x)
ifx<0
y=x^3
else
y=3*x^2
end
2.switch/case
switch/case语句的语法形式如下所示:
switchswitch-expression
casecase-expression1,
statements1;
casecase-expression2,
statements2;
casecase-expression3,
statements3;
………
otherwise
statements;
end
例如:
%文件名为cj.m
functionresult=cj(x)
%将成绩除以10后取整
n=fix(x/10);
switchn
case{8,9,10}
disp('优秀')
case7
disp('良好')
case6
disp('及格')
otherwise
disp('不及格')
end
程序循环控制语句
使用循环控制语句,可以重复执行代码块。
用for语句执行指定次数;while语句适合于循环一直执行,直到满足条件为止;continue和break语句对退出循环给予更多的控制。
1.for循环
for循环允许一组命令以固定的和预定的次数重复执行,for循环的一般形式如下:
forindex=expression(循环变量=初值:
步长:
终值)
statements;
end
例如:
使用for循环计算1+2+3+……+100的值。
程序如下:
sum=0;
fori=1:
1:
100
sum=sum+i;
end
sum
2.while循环
while循环以不定的次数来求一组命令值。
while循环的一般形式如下:
whileexpression
statements;
end
例如:
1.输入项数n,求自然数的前n项和;
n=input('n=')
sum=0;k=1;
whilek<=n
sum=sum+k;
k=k+1;
end
sum
2.求不超过1000的偶数之和与奇数之和。
oushuhe=0;
jishuhe=0;
i=1;
whilei<1000
ifmod(i,2)==0
oushuhe=oushuhe+i;
else
jishuhe=jishuhe+i;
end
i=i+1;
end
oushuhe
jishuhe
循环嵌套或多重循环
例如:
对任意10个数进行从大到小的排列。
程序如下:
a=input('a=');
fori=1:
9
forj=j+1:
10
ifa(i)>a(j)
a(i)=a(i)+a(j);
a(j)=a(i)-a(j);
a(i)=a(i)-a(j);
end
end
end
disp(a);
3.continue语句
continue命令经常与for或while语句一起使用,作用是结束本次循环,即跳过循环体中尚未执行的语句,接着下一次是否执行循环的判断。
4.break语句
break命令经常与for或while语句一起使用,作用是终止本次循环,跳出内层循环。
程序终止控制语句
一般程序代码都是按照执行完后正常退出的,但是,当遇到某些特殊情况,需要程序立即退出时,可以使用return语句提前终止程序运行。
Return语句常用在MATLAB函数式M文件中。
例如:
return语句使用实例。
n=-2;
%n小于0时退出程序
ifn<0
disp('negtivenumber!
')
return;
end
disp('codonnumber')
程序异常处理语句
MATLAB中提供了一种可以进行错误处理的try…catch语句,其语法格式如下:
try
表达式1,表达式2,..,表达式n
catch
表达式1,表达式2,..,表达式n
end
当try与catch之间的所有表达式在执行时没有错误发生时,则不执行catch与end之间的语句;反之则执行。
也可以用lasterr检查最后发生的错误信息。
A=[123;456]
B=[47;86]
try
A',A+A,A+B,A*B
catch
disp('thereiserror')
end
disp('lasterr')
MATLAB函数
helpelfun
Elementarymathfunctions.(小学数学函数)
Trigonometric.(三角)
sin-正弦
sind-正弦值参数以度为单位
sinh-双曲正弦值
asin-反正弦.
asind-正弦反以度为单位的结果
asinh-反双曲正弦值
cos-余弦
cosd-余弦值的参数以度为单位
cosh-双曲余弦值
acos-反余弦值.
acosd-余弦反以度为单位的结果
acosh-双曲余弦值
tan-正切.
tand-参数以度为单位.
tanh-双曲正切值.
atan-反切线
atand-切线反以度为单位的结果
atan2-四象限反正切值
atanh--反双曲正切值.
sec-正割
secd-正割的参数以度为单位
sech-双曲正割.
asec-反正割。
asecd-结果以度为单位的反割技术。
asech-反双曲正割。
csc-余割。
cscd-余割的参数以度为单位。
csch-双曲余割
acsc-反余割。
acscd-反余割以度为单位的结果
acsch-反双曲余割。
cot-余切。
cotd-余切的参数以度为单位。
coth-双曲线余切.
acot-反余切。
acotd-反余切以度为单位的结果
acoth-反双曲余切。
hypot-平方和的平方根。
Exponential.(指数)
exp-指数.
expm1-准确计算exp(x)-1
log-自然对数.
log1p-准确计算log(1+x).
log10-对数共同(基地10)
log2-基2对数和解剖浮点数.
pow2-基地2力量和标度浮动小数点数字.
realpow-电源上复杂的结果,将错误。
reallog-真正的numbero自然对数.
realsqrt-大于或等于零的平方根.
sqrt-平方根.
nthroot-实数的真正的n次根.
nextpow2-其次更大的功率的2。
Complex.(复杂)
abs-绝对值.
angle-相角.
complex-修建从真正和虚构部分的复杂数据。
conj-共轭复数。
imag-复杂的假想部分.
real-复杂的实质部分。
unwrap-解开相角.
isreal-真正的数组,则为true。
cplxpair-对数字为共轭复数对进行排序。
Roundingandremainder.(舍入,其余部分。
)
fix-圆向零。
floor-圆往减去无限。
ceil-轮对正无穷大。
round-舍入为最接近的整数。
mod-模量(分立后的签名其余部分)。
rem-分立后的其余部分。
sign-符号取值函数
helpspecfun
Specializedmathfunctions.(专门的数学函数。
)
Specializedmathfunctions.
airy-Airyfunctions.
besselj-Besselfunctionofthefirstkind.
bessely-Besselfunctionofthesecondkind.
besselh-Besselfunctionsofthethirdkind(Hankelfunction).
besseli-ModifiedBesselfunctionofthefirstkind.
besselk-ModifiedBesselfunctionofthesecondkind.
beta-Betafunction.
betainc-Incompletebetafunction.
betaln-Logarithmofbetafunction.
ellipj-Jacobiellipticfunctions.
ellipke-Completeellipticintegral.
erf-Errorfunction.
erfc-Complementaryerrorfunction.
erfcx-Scaledcomplementaryerrorfunction.
erfinv-Inverseerrorfunction.
expint-Exponentialintegralfunction.
gamma-Gammafunction.
gammainc-Incompletegammafunction.
gammaln-Logarithmofgammafunction.
psi-Psi(polygamma)function.
legendre-AssociatedLegendrefunction.
cross-Vectorcrossproduct.
dot-Vectordotproduct.
Numbertheoreticfunctions.(数字理论作用。
)
factor-Primefactors.
isprime-Trueforprimenumbers.
primes-Generatelistofprimenumbers.
gcd-Greatestcommondivisor.
lcm-Leastcommonmultiple.
rat-Rationalapproximation.
rats-Rationaloutput.
perms-Allpossiblepermutations.
nchoosek-AllcombinationsofNelementstakenKatatime.
factorial-Factorialfunction.
Coordinatetransforms.(坐标转换。
)
cart2sph-TransformCartesiantosphericalcoordinates.
cart2pol-TransformCartesiantopolarcoordinates.
pol2cart-TransformpolartoCartesiancoordinates.
sph2cart-TransformsphericaltoCartesiancoordinates.
hsv2rgb-Converthue-saturation-valuecolorstored-green-blue.
rgb2hsv-Convertred-green-bluecolorstohue-saturation-value.
helpelmat
Elementarymatricesandmatrixmanipulation.(初等矩阵和矩阵操作。
)
Elementarymatrices.(初等矩阵。
)
zeros-Zerosarray.
ones-Onesarray.
eye-Identitymatrix.
repmat-Replicateandtilearray.
linspace-Linearlyspacedvector.
logspace-Logarithmicallyspacedvector.
freqspace-Frequencyspacingforfrequencyresponse.
meshgrid-XandYarraysfor3-Dplots.
accumarray-Constructanarraywithaccumulation.
:
-Regularlyspacedvectorandindexintomatrix.
Basicarrayinformation.(基本阵列信息。
)
size-Sizeofarray.
length-Lengthofvector.
ndims-Numberofdimensions.
numel-Numberofelements.
disp-Displaymatrixortext.
isempty-Trueforemptyarray.
isequal-Trueifarraysarenumericallyequal.
isequalwithequalnans-Trueifarraysarenumericallyequal.
Matrixmanipulation.(矩阵操作。
)
cat-Concatenatearrays.
reshape-Reshapearray.
diag-Diagonalmatricesanddiagonalsofmatrix.
blkdiag-Blockdiagonalconcatenation.
tril-Extractlowertriangularpart.
triu-Extractuppertriangularpart.
fliplr-Flipmatrixinleft/rightdirection.
flipud-Flipmatrixinup/downdirection.
flipdim-Flipmatrixalongspecifieddimension.
rot90-Rotatematrix90degrees.
:
-Regularlyspacedvectorandindexintomatrix.
find-Findindicesofnonzeroelements.
end-Lastindex.
sub2ind-Linearindexfrommultiplesubscripts.
ind2sub-Multiplesubscriptsfromlinearindex.
bsxfun-Binarysingletonexpansionfunction.
Multi-dimensionalarrayfunctions.(多维数组的函数。
)
ndgrid-GeneratearraysforN-Dfunctionsandinterpolation.
permute-Permutearraydimensions.
ipermute-Inversepermutearraydimensions.
shiftdim-Shiftdimensions.
circshift-Shiftarraycircularly.
squeeze-Removesingletondimensions.
Arrayutilityfunctions.(数组实用程序函数。
)
isscalar-Trueforscalar.
isvector-Trueforvector.
Specialvariablesandconstants.(特殊变量和常数。
)
ans-Mostrecentanswer.
eps-Floatingpointrelativeaccuracy.
realmax-Largestpositivefloatingpointnumber.
realmin-Smallestpositivefloatingpointnumber.
pi-3.1415926535897....
i-Imaginaryunit.
inf-Infinity.
nan-Not-a-Number.
isnan-TrueforNot-a-Number.
isinf-Trueforinfiniteelements.
isfinite-Trueforfiniteelements.
j-Imaginaryunit.
why-Succinctanswer.
Specializedmatrices.(专门的矩阵。
)
compan-Companionmatrix.
gallery-Highamtestmatrices.
hadamard-Hadamardmatrix.
hankel-Hankelmatrix.
hilb-Hilbertmatrix.
invhilb-InverseHilbertmatrix.
magic-Magicsquare.
pascal-Pascalmatrix.
rosser-Classicsymmetriceigenvaluetestproblem.
toeplitz-Toeplitzmatrix.
vander-Vandermondematrix.
wilkinson-Wilkinson'seigenvaluetestmatrix.
子函数例如:
子函数的函数实例:
function[avg,med]=calculate(u);
%主函数newstats调用两个子函数求输入矢量的平均值和中值dui
%获得参数长度
n=length(u);
%调用子函数average
avg=average(u,n);
%调用子函数median
med=median(u,n)
%定义函数average,计算平均值
functiona=average(v,n);
a=sum(v)/n;
%定义函数median,计算中值
functionm=median(v,n);
%对矢量进行排序sort(x):
对向量x的元素进行排序(sorting)rem相除后求余
w=sort(v);
ifrem(n,2)==1
m=w((n+1)/2);
else
m=(w(n/2)+w(n/2+1))/2;
end
嵌套函数
在一个函数内部,可以定义一个或多个函数,这种定义在其他函数内部的函数被称为嵌套函数。
嵌套可以多层发生,即一个函数内部可以嵌套多个函数,在嵌套函数内部又可以再嵌套其它函数。
嵌套函数的语法形式如下:
functiona=A(m1,m2)
………
functionb=B(m3)
………
end
end
基本绘图方法
二维图形函数与调用方法
1.常用绘图函数
函数
功能
plot
绘制二维图形,x轴与y轴为线性坐标
semilogx
绘制二维图形,x轴为对数坐标,y轴为线性坐标
smilogy
绘制二维图形,y轴为对数坐标,x轴为线性坐标
loglog
绘制二维图形,x轴,y轴均为对数坐标
plotyy
绘制二维图形,在图形的左右各有一个y轴
polar
绘