ImageVerifierCode 换一换
格式:DOCX , 页数:50 ,大小:471.23KB ,
资源ID:4180291      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4180291.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数学建模matlab学习.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数学建模matlab学习.docx

1、数学建模matlab学习第六章 复数数据、字符数据和附加画图类型 36.1 复数数据 36.1.1 复变量(complex variables) 46.1.2 带有关系运算符的复数的应用 46.1.3 复函数(complex function) 51. 类型转换函数 52. 绝对值和幅角函数 53. 数学函数 5例6.1 66.1.4 复数数据的作图 76.2 字符串函数(string functions) 116.2.1 字符转换函数 116.2.2 创建二维字符数组 126.2.3 字符串的连接 126.2.4 字符串的比较 136.2.5 在一个字符串中查找/替换字符 146.2.6 大

2、小写转换 156.2.7 字符串转换为数字 166.2.8 数字转化为字符串 16例6.2 186.3 多维数组 216.4 关于二维作图的补充说明 236.4.1 二维作图的附加类型 236.4.2 作图函数 276.4.3 柱状图 286.5 三维作图 286.5.1 三维曲线作图 296.5.2三维表面,网格,等高线图象 306.6 总结 336.6.1 好的编程习惯总结 336.6.2 MATLAB函数与命令总结 336.7 练习 346.1 346.2 356.3 356.4 356.5 356.6 356.7 356.8 356.9 366.10 366.11 366.12 366

3、.13 366.14 366.15 366.16 366.17 376.18 376.19 376.20 37第六章 复数数据、字符数据和附加画图类型在第二章中,我们学习了MATLAB基础数据类型:double和char。MATLAB还有许多的附加数据类型,在本章,我们将会了解它们中的一个。我们要讨论的附加数据类型是MATLAB支持的复数数据。我们也将学习如何使用char数据类型,以及如何把MATLAB数组扩展为多维数组。本章还会涉及到MATLAB的附加画图类型。6.1 复数数据复数是指既包含实部又包含虚部的数。复数出现在许多的科研工作问题上。例如,在电器工程中,我们可以用复数代表交变电压,交

4、变电流和阻抗。描述电器系统行为的公式经常用到复数。因为这是非常常见的,作为一个程师如果没有很好理解和运用复数,它无法工作。复数的一般形式如下:C=a+bi其中C为复数,a和b均为实数,i代表。a,b分别为C的实部和虚部。由于复数有两个部分,所以它能在平面内标出。这个平面的横轴是实轴,纵轴是虚轴,所以复数在这个平面内为一个点,横轴为a,纵轴为b。用上面的方式表示一个复数,叫做直角坐标表示,为坐标的横轴与虚轴分别代表复数的实部与虚部。复数有在一平面内另一种表达方式,既极坐标表示,公式如下,c = a + bi = z其中z代表向量的模,代表辐角。直角坐标中的a,b和极坐标z,之间的关系为a = z

5、 cos (6.2)b = z sin (6.3)z = (6.4) (6.5)图6.1 直角坐标系中复数图6.2 极坐标系中复数MATLAB用直角坐标表达复数。每一个复数应有一对实数(a,b)组成。第一个数(a)代表复数的实部,第二个数(b)代表复数的虚部。如果复数c1=a1+b1i和复数c2=a2+b2i,那么它们的加减乘除运算定义如下。c1 + c2 = (a1 + a2) + (b1 + b2)i (6.6)c1 - c2 = (a1 - a2) + (b1 - b2)i (6.7)c1 c2 = (a1a2 - b1b2) + (a1b2 + b1a2)i (6.8) (6.9)当两

6、个复数进行二元运算,MATLAB将会用上面的法则进行加法,减法,乘法和除法运算。6.1.1 复变量(complex variables)当复数值赋值于一个变量名,MATLAB将自动创建一个复变量。创建复数的最简单方法是用MATLAB本自带的因有变量i或j,它们都被预定义为。例如下面的语句将复数4+3i赋值于c1。 c1 = 4 + 3*ic1 = 4.0000 + 3.0000i函数isreal可以判断一个数组包是实数组还是复数组。如果一个数组中的所有元素只有虚部,那么这个数组是复数组,并且isreal(array)将会返回一个0。6.1.2 带有关系运算符的复数的应用用关系运算符=来判断两复

7、数是否相等,或用关系运算符=判断两复数是否不相等,这种情况是可能的。这些运算都会产生出我们所期望的结果。例如,如果c1=4+3i和c2=4-3i,那么关系运算c1=c2将会产生0,关系运算c1=c2将会产生1。但是,比较运算符,=将不会产生我们所期望的结果。当复数进行此类关系运算时,只对复数的实部进行比较。例如,如果c1=4+i3和c2=4+i8,那么比较运算c1c2将会产生1,尽管c1的模要比c2的模小。如果我们需要用这些运算对两复数进行比较,我们更加关心的是两复数的模,而不只是实部。复数的模可以由abs固有函数计算得到(在下一节介绍,或者由公式(6.4)得到)。 (6.4)如果我们对两复数

8、进行比较,得到的结果将更加合理。abs(c1)abs(c2)将会产生0,因为c1的模大于c2的模。常见编程错误当我们应用关系运算符对复数运算时,一定要小心。关系运算符,=只比较复数的实部,而不是它们的模。如果你要用这些关系运算符对一复数进行运算,比较两复数的模将更加常见。6.1.3 复函数(complex function)MATLAB中有许多的函数支持复数的运算。这些函数可分为三大类。1. 类型转换函数这些函数把数据从复数据类型转换为实数数据类型(double)。函数real将复数的实部转化为double型数据,把复数的虚部抛弃。函数imag把函数的虚部转化为相应的实数。函数描述conj(c

9、)计算c的共共轭复数。如果c=a+bi,那么conj(c)=abi。real(c)返回复数c的实部imag(c)返回复数c的虚部isreal(c)如果数组c中没有一个元素有虚部,函数isreal(c)将返回1。所以如果一个数组c是复数组成,那么isreal(c)将返回1。abs(c)返回复数c模angle(c)返回复数c的幅角,等价于atan2(imag(c),real(c)表6.1 常见的支持复数运算的MATLAB函数2. 绝对值和幅角函数这些函数把复数转化它的极坐标形式。函数abs(c)用于计算复数c相应的绝对值,公式如下 其中c=a+bi。函数angle(c)用下面的公式计算复数c的幅角

10、angle(c)=atan2(imag(c), real(c)由它产生的角的取值范围为- calc_root2This program solves for the roots of a quadratic equation of the form A*X2 + B*X + C = 0. Enter the coefficient A: 1Enter the coefficient B: 5Enter the coefficient C: 6The roots of this equation are:x1 = (-2.000000) +i (0.000000)x2 = (-3.000000)

11、 +i (0.000000) calc_root2This program solves for the roots of a quadratic equation of the form A*X2 + B*X + C = 0. Enter the coefficient A: 1Enter the coefficient B: 4Enter the coefficient C: 4The roots of this equation are:x1 = (-2.000000) +i (0.000000)x2 = (-2.000000) +i (0.000000) calc_root2This

12、program solves for the roots of a quadratic equation of the form A*X2 + B*X + C = 0. Enter the coefficient A: 1Enter the coefficient B: 2Enter the coefficient C: 5The roots of this equation are:x1 = (-1.000000) +i (2.000000)x2 = (-1.000000) +i (-2.000000)在三种不同的情况下,程序均给出了正确的结果。注意此程序与例3.2中的程序相比有多简单。复数

13、数据的应用可大大简化我们的程序。6.1.4 复数数据的作图因为复数数据既包括实部又包括虚部,所以在MATLAB中复数数据的作图与普通实数据的作图有所区别。例如,考虑下面的函数y(t) = e -0.2t (cost + i sin t) (6.10)如果我们用传统的plot命令给这个函数作图,只有实数数据被作出来,而虚部将会被忽略。下面的语句得到图象如图6.3所示,注意出现了警告信息:数据的虚部被忽略t = 0:pi/20:4*pi;y = exp(-0.2*t) .* (cos(t) + i * sin(t);plot(t, y);title(bfPlot of Complex Functi

14、on vs Time);xlabel(bfitt);ylabel(bfity(t);图6.3 用plot(t, y)画出的y(t) = e -0.2t (cost + i sin t)图象如果函数的实部和虚部都需要的话,那么用户可以有几种选择。我们可以用下面的语句,在相同的时间轴内画出函数的图象(图6.4)。t = 0:pi/20:4*pi;y = exp(-0.2*t) .* (cos(t) + i * sin(t);plot(t, real(y),b-);hold on;plot(t, imag(y),r-);title(bfPlot of Complex Function vs Time

15、);xlabel(bfitt);ylabel(bfity(t);legend(real,imaginary);hold off;图6.4 包含了y(t)的实部和虚部可选择的,函数的实部-虚部图可以被画出来。如果有一个复参数提供给plot函数它会自动产生一个函数的实部-虚部图。产生这类图的语句如下,产生的结果如图6.5所示。t = 0:pi/20:4*pi;y = exp(-0.2*t) .* (cos(t) + i * sin(t);plot(y,b-);title(bfPlot of Complex Function);xlabel(bfReal Part);ylabel(bfImagina

16、ry Part);图6.5 y(t)的的实部-虚部图最后,我们可以画出函数的极坐标图。产生这类图语句如下,产生的结果如图图6.6所示。t = 0:pi/20:4*pi;y = exp(-0.2*t) .* (cos(t) + i * sin(t);polar(angle(y),abs(y);title(bfPlot of Complex Function);图6.6 y(t)的极坐标图6.2 字符串函数(string functions)一个MATLAB字符串是一个char型数组。每一个字型占两个字节。当字符串被赋值于一个变量时,这个变量将被自动创建为字符变量。例如语句str = This i

17、s a test;将会创建一个含有14个元素的数组。用whos命令查看它属性。 whos Name Size Bytes Class str 1x14 28 char arrayGrand total is 14 elements using 28 bytes一个专门的函数ischar常用来判断一个变量是否为字符数组。如果是的话,那么函数较会返回1,如果不是,将会返回0。在下面的的小节中,我们将向大家介绍一些对字符串进行操作的函数。6.2.1 字符转换函数我们可以利用double函数把变量从字型转化为double型。所以,函数double(str)产生的结果为 x = double(str)x

18、 = Columns 1 through 12 84 104 105 115 32 105 115 32 97 32 116 101 Columns 13 through 14 115 116我们可以利用char函数把double型数据转化为字符型数据。所以函数char(x)产生的结果为 x = char(x)x =This is a test6.2.2 创建二维字符数组我们可以创建二维字符数组,但一个数组中每一行的长度都必须相等。如果其中的一行比其他行短,那么这个字符数据将会无效,并产生一个错误。例如,下面的语句是非法的,因为他两行的长度不同。name = Stephen J. Chapma

19、n; Senior Engineer;创建二维字符数组的最简单的方法是用char函数。函数将会自动地寻找所有字符串中最长的那一个。 name = char(Stephen J. Chapman,Senior Engineer)name =Stephen J. ChapmanSenior Engineer 二维字符数组也可以用函数strvcat,这个函数我会在下一节中介绍。好的编程习惯用char函数创建二维字符数组,我们就不用担心每一行的长度不相同了。我们可以应用deblank函数去除多余空格。例如,下面的语句去除name数组中第二行的多余空格,产生的结果与原来的进行比较。 line2 = na

20、me(2,:)line2 =Senior Engineer line2_trim = deblank(name(2,:)line2_trim =Senior Engineer size(line2)ans = 1 18 size(line2_trim)ans = 1 156.2.3 字符串的连接函数strcat水平连接两字符串,忽略所有字符串末端的空格,而字符串的空格保留。例如,下面的语句为 result = strcat(string 1 ,String 2)result =string 1String 2产生的结果string 1String 2。函数strvcat用于竖直地连接两字符串,

21、自动地把它转化为二维数组。这个函数将产生这样的结果 result = strvcat(Long String 1 ,String 2)result =Long String 1 String 2 6.2.4 字符串的比较字符串与子字符串可以通过下面许多的方式进行比较。 两个字符串,或两个字符串的部分,看两者是否相同 两个独立的字符相比较看两者是否相同 检查字符串判断每一个字符是字母,还是空格6.2.4.1 比较两字符串,看是否相同你可以利用MATLAB函数比较两字符串整体是否相同。它们是 strcmp判断两字符串是否等价 strcmpi忽略大小写判断两字符串是否等价 strncmp判断两字符串

22、前n个字符是否等价 strncmpi忽略大小写判断两字符串前n个字符是否等价函数strcmp比较字符串,包括字符串前面或后面的空格。如果两字符串完全相同,那么这个函数将返回1。否则,返回0。strcmpi与strcmp类似,但它忽略了大小写(即“a”与“A”看作相同的)函数strncmp用来比较两字符串前n个字符串,包含开头的空格,如果这个n个字符是相同的,它们将会返回1。否则它将会返回0。函数strncmpi与它相类似,但忽略了大小写。为了更好的理解这些函数,考虑下面的字符串str1 = hello;str2 = Hello;str3 = help;字符串str1和str2不相同,但它第一个字母大小不同。所以strcmp将返回0,strcmpi将返回1。 c = strcmp(str1,str2)c = 0 c = strcmpi(str1,str2)c = 1字符串str1和str3不相同,所以strcmp与strcmpi返回0。但是str1和str3的前三个字符是相同,所以按照下面的方式调用将会返回1。 c = strncmp(str1, str3, 2)c = 16.2.4.2 判断单个字符是否相等我们可以利用MATLAB关系运算符对字符数组中的每一个元素进行检测,看是否相同,但是我们要保证它们的维数是相同的,或其中一个是标量。例如,你可以用相等运算符(=)来

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1