第一章 基础准备及入门(matlab基础教程)(2)

2019-08-31 14:08

三 MATLAB默认的预定义变量

在MATLAB中有一些所谓的预定义变量(Predefined Variable),见表1.3-1。每当MATLAB启动,这些变量就被产生。这些变量都有特殊含义和用途。建议:用户在编写指令和程序时,应尽可能不对表1.3-1所列预定义变量名重新赋值,以免产生混淆。

表1.3-1 MATLAB中最常用的预定义变量 预定义变量 含 义 预定义变量 含 义 ans 计算结果的默认变量名 NaN 或 nan 不是一个数(Not a Number),eps 如0/0,?/? 机器零阈值 nargin Inf或inf 无穷大,如1/0 函数输入宗量数目 nargout i 或 j 函数输出宗量数目 虚单元i?j??1 pi 圆周率 ? realmax realmin 最大正实数 最小正实数 〖说明〗 ? 假如用户对表中任何一个预定义变量中进行赋值,则那个变量的默认值将被用户新赋

的值“临时”覆盖。所谓“临时”是指:假如使用clear指令清除MATLAB内存中的变量,或MATLAB指令窗被关闭后重新启动,那么所有的预定义变量将被重置为默认值,不管这些预定义变量曾被用户赋过什么值。

? 在遵循IEEE算法规则的机器上,被 0 除是允许的。它不会导致程序执行的中断,只是

在给出警告信息的同时,用一个特殊名称(如Inf,NaN)记述。这个特殊名称将在以后的计算中以合理的形式发挥作用。

【例1.3-3】运用以下指令,以便初步了解预定义变量。本例演示:预定义变量已经存在的事实;若干预定义变量的数量级概念。

format long realmax ans =

1.797693134862316e+308

realmin ans =

2.225073858507201e-308

eps ans =

2.220446049250313e-016

pi ans =

3.141592653589793

四 运算符和表达式

(1)经典教科书上的算术运算符在MATLAB中的表达方式,见表1.3-2。

表 1.3-2 MATLAB表达式的基本运算符 数学表达式 矩阵运算符 数组运算符 a + b a + b a?b 加 a - b a - b a?b 减 a * b a .* b a?b 乘 a?b 除 a / b 或 b \\ a a ./ b 或 b .\\ a a ^ b a .^ b 幂 ab 圆括号 〖说明〗

( ) ( ) ( ) 6

? 因为MATLAB面向复数设计,其所有运算定义在复数域上。所以对于方根问题,运算

只返还一个“主解”。要得复数的全部方根,必须专门编写程序(见例1.3-6)。 ? 因为MATLAB面向矩阵/数组设计,标量被看作(1?1)的矩阵/数组。

? 数组运算的“乘、除、幂”规则与相应矩阵运算根本不同。前者的算符比后者多一个

“小黑点”。(参见例1.3-9,例1.3-10。更详细说明请看第3章)

? MATLAB用左斜杠或右斜杠分别表示“左除”或“右除”运算。对标量而言,“左除”

和“右除”的作用结果相同。但对矩阵来说,“左除”和“右除”将产生不同的结果。

(2)MATLAB书写表达式的规则与“手写算式”几乎完全相同。 ? 表达式由变量名、运算符和函数名组成。

? 表达式将按与常规相同的优先级自左至右执行运算。

? 优先级的规定是:指数运算级别最高,乘除运算次之,加减运算级别最低。 ? 括号可以改变运算的次序。

? 书写表达式时,赋值符“=”和运算符两侧允许有空格,以增加可读性。

五 面向复数设计的运算——MATLAB特点之一

MATLAB的所有运算都是定义在复数域上的。这样设计的好处是:在进行运算时,不必像其他程序语言那样把实部、虚部分开处理。为描述复数,虚数单位用预定义变量 i 或 j 表示。

复数 z?a?bi?re直角坐标表示和极坐标表示之间转换的MATLAB指令如下。 real(z) 给出复数z的实部 a?rcos?。 imag(z) 给出复数z的虚部 b?rsin?。 abs(z)

给出复数z的模 a2?b2。 以弧度为单位给出复数z的幅角 arctan?ii?angle(z)

b。 a【例1.3-4】复数z1?4?3i,z2?1?2i,z3?2e6表达,及计算z?确的复数输入法;涉及复数表示方式的基本指令。 (1)经典教科书的直角坐标表示法

z1= 4 + 3i z1 =

4.0000 + 3.0000i

%合法,但建议少用或不用

z1z2。本例演示:正z3

〖说明〗

? 本书建议读者不要使用这种输入格式。因为这种书写格式,只适用于“数值标量”复

数,而不适用于“数值矩阵”。

? 在这种书写格式中,4i是一个完整的虚数,在4和i之间不许“空格”存在。

(2)采用运算符构成的直角坐标表示法和极坐标表示法

z2 = 1 + 2 * i %运算符构成的直角坐标表示法 z3=2*exp(i*pi/6) %运算符构成的极坐标表示法 z=z1*z2/z3 z2 =

1.0000 + 2.0000i z3 =

1.7321 + 1.0000i z =

1.8840 + 5.2631i

(3)复数的实虚部、模和幅角计算 real_z=real(z) image_z=imag(z)

7

magnitude_z=abs(z)

angle_z_radian=angle(z) angle_z_degree=angle(z)*180/pi real_z = 1.8840 image_z = 5.2631 magnitude_z = 5.5902

angle_z_radian = 1.2271

angle_z_degree = 70.3048

%弧度单位 %度数单位

【例1.3-5】图示复数z1?4?3i,z2?1?2i的和(配图1.3-2)。本例演示:MATLAB的运算在复数域上进行;指令后“分号”的作用;复数加法的几何意义;展示MATLAB的可视化能力(让读者感受,但不要求理解)。

z1=4+3*i;z2=1+2*i;

%在一个物理行中,允许输入多条指令。

%但各指令间要用“分号”或“逗号”分开。 %指令后采用“分号”,使运算结果不显示。

z12=z1+z2 %以下用于绘图 clf,hold on %clf清空图形窗。逗号用来分隔两个指令。 plot([0,z1,z12],'-b','LineWidth',3) plot([0,z12],'-r','LineWidth',3) plot([z1,z12],'ob','MarkerSize',8) hold off,grid on, axis equal

axis([0,6,0,6]) text(3.5,2.3,'z1') text(5,4.5,'z2') text(2.5,3.5,'z12') xlabel('real') ylabel('image') shg

z12 =

5.0000 + 5.0000i

8

图 1.3-2 两个复数相加

【例1.3-6】 用MATLAB计算3?8能得到 –2 吗(配图1.3-3)?本例演示:MATLAB运算定义在复数域的实质;指令后“分号”抑制运算结果的显示;MATLAB的方根运算规则;更复杂指令的表示方式;展现MATLAB的图形表现力。(对于本例指令,读者能有体验就可,不必强求理解。)

(1)直接计算时,得到处于第一象限的方根。

a=-8;

r_a=a^(1/3) %求3次根 r_a =

1.0000 + 1.7321i

(2)3?8的全部方根计算如下

p(r)?r3?a

p=[1,0,0,-a]; %p是多项式p(r)的系数向量

% 先构造一个多项式

%指令末尾的“英文状态分号”使该指令运行后,不显示结果。 R=roots(p) %求多项式的根 R =

-2.0000 1.0000 + 1.7321i 1.0000 - 1.7321i

(3)图形表示

MR=abs(R(1)); %计算复根的模

t=0:pi/20:2*pi; %产生参变量在0到2*pi间的一组采样点 x=MR*sin(t); y=MR*cos(t);

plot(x,y,'b:'),grid on %画一个半径为R的圆 %注意“英文状态逗号”在不同位置的作用 hold on

plot(R(2),'.','MarkerSize',30,'Color','r') %画第一象限的方根 plot(R([1,3]),'o','MarkerSize',15,'Color','b') %画另两个方根 axis([-3,3,-3,3]),axis square %保证屏幕显示呈真圆 hold off

图 1.3-3 (-8)的全部三次方根分布

9

〖说明〗

? 本例有助于理解MATLAB的计算特点。

? 对复数进行方根运算时,MATLAB只给出处于“第一象限”的那个根。

六 面向数组设计的运算——MATLAB特点之二

在MATLAB中,标量数据被看作(1?1)的数组(Array)数据。所有的数据都被存放在适当大小的数组中。为加快计算速度(运算的向量化处理),MATLAB对以数组形式存储的数据设计了两种基本运算:一种是所谓的数组运算;另一种是所谓的矩阵运算。在此仅以算例展示MATLAB的计算特点,更详细的叙述请见第3章。

?13?【例1.3-7】实数数组AR???的“一行”输入法。本例演示:二维数组的最基本、最

24??常用输入法;二维数组输入的三大要素。

(1)在键盘上输入下列内容

AR= [1,3;2,4]

(2)按 [Enter] 键,指令被执行。

(3)在指令执行后,MATLAB指令窗中将显示以下结果:

AR =

1 3 2 4

〖说明〗

在MATLAB中,不必事先对数组维数及大小做任何说明,内存将自动配置。

二维数组输入的三大要素:数组标识符“[ ]”;元素分隔符空格或逗号“,”;数组行间分

隔符分号“;”或“回车键”。注意:所有标点符号都是“英文状态的符号”。 ? MATLAB对字母大小写是敏感的。比如本例中的数组赋给了变量AR,而不是 Ar, aR, 或

ar 。

在全部键入一个指令行内容后,必须按下 [Enter] 键,该指令才会被执行。请读者务必记住

此点。出于叙述简明的考虑,本书此后将不再重复提及此操作。

【例1.3-8】实数数组AI??AI=[5,7 6,8] AI =

5 7 6 8

?57??的“分行”输入法。 68??〖说明〗

? 本例采用这种输入法是为了视觉习惯。当然,对于较大的数组也可采用此法。 ? 在这种输入方法中,“回车”符用来分隔数组中的行。

?1?5i3?7i?【例1.3-9】对复数数组A???进行求实部、虚部、模和幅角的运算。本例演

2?6i4?8i??示:复数数组的生成;MATLAB指令对数组元素“并行操作”的实质。

(1)创建复数数组

AR=[1,3;2,4];AI=[5,7;6,8]; A=AR-AI*i %形成复数矩阵 A =

1.0000 - 5.0000i 3.0000 - 7.0000i 2.0000 - 6.0000i 4.0000 - 8.0000i

10


第一章 基础准备及入门(matlab基础教程)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高低压开关

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: