(2)求复数数组的实部和虚部
A_real=real(A) A_image=imag(A) A_real =
1 3 2 4 A_image = -5 -7 -6 -8
(3)求复数数组中各元素的模和幅角——循环法(笨拙!)
for m=1:2
for n=1:2 Am1(m,n)=abs(A(m,n)); Aa1(m,n)=angle(A(m,n))*180/pi; %以度为单位计算幅角 end end
Am1,Aa1 Am1 =
5.0990 7.6158 6.3246 8.9443 Aa1 =
-78.6901 -66.8014 -71.5651 -63.4349
(4)求复数数组中各元素的模和幅角——直接法
Am2=abs(A)
Aa2=angle(A)*180/pi Am2 =
5.0990 7.6158 6.3246 8.9443 Aa2 =
-78.6901 -66.8014 -71.5651 -63.4349
〖说明〗
? 函数real, imag, abs, angle是同时、并行地作用于数组的每个元素。对4个元素运算所需
的时间大致与对单个元素所需时间相同。这有利于运算速度的提高。这是“向量化”运算的一种形式。
? 本例给出了循环法求各元素模和幅角的指令。这是很不有效的计算方法。对于MATLAB
以外的许多编程语言来说,可能不得不采用“循环”处理方式来解本例。记住:对于MATLAB来说,应该尽量摒弃“循环”处理,而采用“向量化”处理方式。
【例1.3-10】画出衰减振荡曲线y?esin3t,t的取值范围是[0,4?](配图1.3-4)。本例演示:展示数组运算的优点;展示MATLAB的可视化能力。
t=0:pi/50:4*pi; %定义自变量t的取值数组
y=exp(-t/3).*sin(3*t); %计算与自变量相应的y数组。注意:乘法符前面的小黑点。 plot(t,y,'-r','LineWidth',2) %绘制曲线 axis([0,4*pi,-1,1])
xlabel('t'),ylabel('y')
?t3 11
图 1.3-4 衰减振荡曲线
〖说明〗
? 本例第二条指令中的“.*”符号表示乘法是在两个数组相同位置上的元素间进行的。
本书把这种乘法称为“数组乘”。数组乘的引入,不但使得程序简洁自然,而且避免了耗费机时的“循环计算”。关于数组运算的详细叙述请见第3章。
? 本例第二条指令是典型的“向量化”处理形式。本书作者建议读者,只要可能,应尽
量采用“向量化”运算形式。
?3?2i2?6i?【例1.3-11】复数矩阵B???的生成,及计算A?B矩阵乘积(A取自算例
5?3i4?2i??1.3-9)。本例演示:MATLAB矩阵运算指令的简捷性。
B=[3+2i,2+6i;5+3*i,4-2*i] %复数数组的又一种输入方式
%注意标点符号的作用 C=A*B %矩阵乘法 B =
3.0000 + 2.0000i 2.0000 + 6.0000i 5.0000 + 3.0000i 4.0000 - 2.0000i C =
49.0000 -39.0000i 30.0000 -38.0000i 62.0000 -42.0000i 40.0000 -40.0000i
〖说明〗
当数组被赋予“变换”属性时,二维数组就被称为矩阵。只有当两个矩阵的“内维大小相
等”时,矩阵乘法才能进行。本例中,矩阵A的列数与矩阵B的行数相等,所以可以进行A乘B。
从表达方式看,“矩阵相乘”的指令格式与“标量相乘”指令格式一样。在其他编程语言
中,矩阵乘法不得不依赖“循环”进行。
MATLAB之所以能把矩阵运算表达得像标准“线性代数”那样简洁易读、自然流畅,那是
由于MATLAB的设计者采用了“面向对象”编程技术。
1.4 Command Window操作要旨
前一节借助算例,使读者对MATLAB指令窗的使用方法有了一个直观的感受。本节将在上节的基础上对控制指令窗的指令和操作进行较系统的归纳,以便读者更全面地了解MATLAB,更方便地使用MATLAB。
12
1.4.1 一
指令窗的显示方式 默认的输入显示方式
从MATLAB7.0起,指令窗中的字符、数值等采用更为醒目的分类显示:
对于输入指令中的if, for, end等控制数据流的MATLAB关键词自动地采用蓝色字体显示。 对于输入指令中的非控制指令、数码,都自动地采用黑色字体显示。 输入的字符串自动呈现为紫色字体。
二 运算结果的显示
在指令窗中显示的输出有:指令执行后,数值结果采用黑色字体输出;而运行过程中的警告信息和出错信息用红色字体显示。 运行中,屏幕上最常见到的数字输出结果由5位数字构成。这是“双精度”数据的默认输出格式。用户不要误认为,运算结果的精度只有5位有效数字。实际上,MATLAB的数值数据通常占用64位(Bit)内存,以16位有效数字的“双精度”进行运算和输出。MATLAB为了比较简洁、紧凑地显示数值输出,才默认地采用format short g格式显示出5位有效数字。用户根据需要,可以在MATLAB指令窗中,直接输入相应的指令,或者在菜单弹出框中进行选择,都可获得所需的数值计算结果显示格式。MATLAB数值计算结果显示格式的类型见表1.4-1。
表1.4-1 数据显示格式的控制指令 指 令 含 义 举 例 说 明 format 通常保证小数点后四位有效,最多不超314.159被显示为314.1590; format short 过7位;对于大于1000的实数,用5 位3141.59被显示为3.1416e+003 有效数字的科学记数形式显示。 3.141592653589793 format long 小数点后15 位数字表示 3.1416e+00 format short e 5 位科学记数表示 3.14159265358979e+00 format long e 15 位科学记数表示 format short g 从format short 和format short e中自动选3.1416 择最佳记数方式 format long g 从format long 和format long e中自动选3.14159265358979 择最佳记数方式 355/113 format rat 近似有理数表示 400921fb54442d18 format hex 十六进制表示 format + 显示大矩阵用。正数、负数、零 分别用 + , + - , 空格表示。 3.14 format bank (金融)元、角、分表示 format compact 显示变量之间没有空行 format loose 在显示变量之间有空行 〖说明〗 format short显示格式是默认的显示格式 。 该表中实现的所有格式设置仅在MATLAB的当前执行过程中有效。 三 显示方式的永久设置
用户根据需要,可以对指令窗的字体风格、大小、颜色和数值计算结果显示格式进行设置。设置方法是:选中 {File:Preferences}下拉菜单项,引出一个参数设置对话框;在此弹出对话框的左栏选中“Font & Colors”,对话框的右边就出现相应的选择内容;用户根据需要和对话框提示对数据显示格式,或字体等进行选择;最后,通过点击 [OK] 键,便完成了设置。注意:该设置立即生效,并且这种设置将被永久保留,即这种设置不因MATLAB
13
关闭和开启而改变,除非用户进行重新设置。 在此还要指出,对于数值显示格式的设置,也可以直接在指令窗中,通过指令的运作进行。但这样的设置仅对当前的MATLAB指令窗起作用,一旦MATLAB 关闭,这种设置也就随之失效。
1.4.2 指令行中的标点符号
通过前面算例,读者可能已对标点符号的作用有所体会。在此要强调指出:标点在MATLAB中的地位极其重要。为此,把各标点的作用归纳成表1.4-2。
表1.4-2 MATLAB常用标点的功能 名 称 标 点 作 用 (为机器辨认)用作输入量与输入量之间的分隔符; 空格 数组元素分隔符。 用作要显示计算结果的指令与其后指令之间的分隔; 逗号 , 用作输入量与输入量之间的分隔符; 用作数组元素分隔符号。 数值表示中,用作小数点; 黑点 . 用于运算符号前,构成“数组”运算符。 用于指令的“结尾”,抑制计算结果的显示; 分号 ; 用作不显示计算结果指令与其后指令的分隔; 用作数组的行间分隔符。 用以生成一维数值数组; 冒号 : 用做单下标援引时,表示全部元素构成的长列; 用做多下标援引时,表示那维上的全部元素。 注释号 % 由它“启首”的所有物理行部分被看作非执行的注释 单引号对 ' ' 字符串记述符 改变运算次序; 圆括号 ( ) 在数组援引时用; 函数指令输入宗量列表时用。 输入数组时用; 方括号 [ ] 函数指令输出宗量列表时用。 胞元数组记述符; 花括号 { } 图形中被控特殊字符括号。 (为使人易读)用作一个变量、函数或文件名中的连字符; 下连符 _ 图形中被控下脚标前导符。 由三个以上连续黑点构成。它把其下的物理行看作该行的续行号 ... “逻辑”继续,以构成一个“较长”的完整指令。 放在函数名前,形成函数句柄; “At”号 @ 匿名函数前导符; 放在目录名前,形成“用户对象”类目录。 〖说明〗为确保指令正确执行,以上符号一定要在英文状态下输入。因为MATLAB不能识别含有中文标点的指令。 1.4.3 指令窗的常用控制指令
表1.4-3 常见的通用操作指令 指 令 含 义 指 令 含 义 cd exit 设置当前工作目录。 关闭/退出 MATLAB clf quit 清除图形窗 关闭/退出 MATLAB clc more 清除指令窗中显示内容 使其后的显示内容分页进行
14
clear dir edit 清除MATLAB工作空间中保存的变量 列出指定目录下的文件和子目录清单 打开M文件编辑器 return type which 返回到上层调用程序;结束键盘模式 显示指定M文件的内容 指出其后文件所在的目录 〖说明〗
? 表1.4-3所列的指令是基本的,它们对MATLAB 各版都适用。
? 尽管随版本的升级,不断增添着列表中指令的“等价”菜单选项操作或工具条图标操
作,但这种“等价”仅对“人机交互”过程而言。至于这些指令在M文件中的作用仍是不可替代的。
? cd 及dir 指令的操作响应,可以用MATLAB操作桌面上或当前目录浏览器中的“浏览
键(Browser)”替代。关于当前目录浏览器的使用,请看第1.6节。
? clear清除内存变量的操作,可以等价地在“工作空间浏览器”交互界面中实现。关于
工作空间浏览器的使用,请看第1.7节。
? edit 指令的等价操作是:选择MATLAB操作桌面或指令窗的下拉菜单项 {File:New:
M-file} ,或点击相应工具条上的节。
和
图标。关于M文件编辑器的使用,请看第1.9
1.4.4 指令窗中指令行的编辑
为了操作方便,MATLAB不但允许用户在指令窗中对输入的指令行进行各种编辑和运
行,而且允许用户对过去已经输入的指令行进行回调、编辑和重运行。具体的操作方式见表1.4-4。
表1.4-4 MATLAB 指令窗中实施指令行编辑的常用操作键 键 名 作 用 键 名 作 用 ? Home 使光标移到当前行的首端 前寻式调回已输入过的指令行 ? End 后寻式调回已输入过的指令行 使光标移到当前行的尾端 ? Delete 删去光标右边的字符 在当前行中左移光标 ? Backspace 删去光标左边的字符 在当前行中右移光标 PageUp 前寻式翻阅当前窗中的内容 Esc 清除当前行的全部内容 PageDown 后寻式翻阅当前窗中的内容 〖说明〗 表1.4-4所列的操作对MATLAB各版均适用。
? 事实上,MATLAB把指令窗中输入的所有指令都记录在内存中专门开辟的“指令历史
空间(Command History)”中,只要用户对它们不进行专门的删除操作,它们既不会因为用户对指令窗进行“清屏”操作(即运行clc指令)而消失,也不会因用户对“工作空间”进行“清除内存变量”(即运行clear指令)而消失。
? 指令窗中输入过的所有指令都被显示在“历史指令浏览器”交互界面中,以供随时观
察和调用。关于“历史指令浏览器”的使用请看第1.5节。
【例1.4-1】指令行操作过程示例。 (1)若用户想计算y1?2sin(0.3?)1?5的值,那么用户应依次键入以下字符
y1=2*sin(0.3*pi)/(1+sqrt(5))
(2)按 [Enter] 键,该指令便被执行,并给出以下结果
y1 =
0.5000
(3)通过反复按键盘的箭头键,可实现指令回调和编辑,进行新的计算。
15