77范文网 - 专业文章范例文档资料分享平台

MatLab编程中文版第二章(7)

来源:网络收集 时间:2020-03-27 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

% percent --The age of carbon 14 remaining at the time of the measurement % ratio --The ratio of the carbon 14 remaining at the time of the measurement to the original amount of carbon 14. %Set decay constant for carbon-14 lamda=0.00012097; %Prompt the user for the percentage of C-14 remaining. percent=input('Enter the percentage of carbon 14 remaining:\\n'); %Perform calculations ratio=percent/100; %Convert to fractional ratio age=(-1.0/lamda)*log(ratio);%Get age in years %Tell the user about the age of the sample. string=['The age of the sample is ' num2str(age) 'years.']; disp(string); 我们通过计算C14 的半周期来来测试这个程序. 测试结果如下 >> c14_date Enter the percentage of carbon 14 remaining: 50 The age of the sample is 5729.9097years. 在化学物理CRC手册(The CRC Handbook of Chemistry and Physics)中,C14的半衰期为5730年.我们计算的结果和参考书相符.

图2.9 碳14衰减图象

2.13 调试MATLAB程序

有一个古老的说法,人这一生唯一能够确定的东西是死亡和税收.我们在这里再增加一项,无论你编定多大的程序,你第一次运行时,肯定通不过!程序中的错误我们称之为BUGS,找出并排出它们,我们称之为调试(debugging).已知一个程序,而无法运行,我们怎样调试它呢?

在MATLAB中有三种类型的错误.第一种错误是语法错误.语法错误是MATLAB自身的

29

错误,例如拼写错误和标点错误.当编译M文件时,maltab编译器将会找出这些错误.例如,语句

x = ( y + 3 ) / 2 );

有一个语法错误,因为其括号不平衡.

如果这句存储在M文件test.m中,当test编译进,将会出现下面的信息。 >> test ??? Error: File: d:\\MATLAB7\\work\\test.m Line: 1 Column: 10 Unbalanced or misused parentheses or brackets. 第二种类型的错误是一种运行时错误。当一个非法的数学运算出现在程序的过程(例如,除以0),将会出现运行时错误。这些错误将会使程序返回Inf或NaN,用来参与下一步的运算。导致这个程序的结果变无效。

错误的第三种形式是逻辑错误(logical error).逻辑错误是指编译和运行都能通过,而产生了错误的结果。

在编程过程中出现的最普遍的错误是书写错误。一些书写错误可能产生无效的

MATLAB语句。这些错误产生的语法错误可能会被编译器发现。另一个书写错误发生在变量名的书写上。例如,变量中的字符可能被调换,漏写或错写。这样就会创建一个新的变量,在前面我们已经提到,MATLAB能够很容易地创造一个新的变量,它不会发现这个错误。书写错误也能导致逻辑错误。例如,如果变量vel1和vel2都在程序中代表速度,如果一时疏忽用其中一个替代了另一个,那么你就只能用人工检查代码找出此类错误。有的时侯程序开始时能够执行,但是运行时错误和逻辑错误可能在执行中发生。在这种情况下,可能是输入错误,也可能是逻辑结构错误。找出这类错误的第一步是检查程序的输入数据。既可以去掉输入语句后的分号,也可以加入一个多余的输出语句以证明这个输入值是不是你想要的。如果你已经排除了变量名错误和输入值错误,接着你要处理的是逻辑错误。你应该检测是否有逻辑错误,应当检查每一个赋值语句。

1.如果一个赋值语句非常的长,把他分成许多小的赋值语句。小的语句易证明。

2.检查你的赋值语句中括号的放置。在赋值语句中,由于括号导致运算顺序错误是极其常见的错误。如果你对运算顺序仍有疑问,应该多加括号,使之更加清晰。

3.保证每个变量正确的初始化。 4.保证函数中用到的单位统一。例如,在三角函数中输入必须是弧度值,而不是角度值。如果你仍然得到的是错误的语句,在更多的位加上输出语句,以检查中间计算。如果你能确定错误的位置,那么你就知道在那里找到问题所在,百分九十五地在这片区域内。如果问题依然存在,那么这时你就应当把你遇到的问题解释给你的同学或老师,让他们给你检查错误。一个人看自己编写的代码找不到错误是非常常见的,而其他的人则可以迅速地找出错误的地方,而这个地方你可能已经看了一次又一次。

好的编程习惯

确保你在编程设计过程: 1.初始化所有变量

2.适当应用括号使运算顺序清晰以减少调试的工作量

在MATLAB中有一个专门的调试器,叫做symbolic debugger. symbolic debugger允许用户一句一句地执行语句,检测出所有的变量值,它能让你看到所有的中间值,而不用在其中加入输出语句。我们将会在第三章中介绍symbolic debugger。

2.14 总结

在本章中,我们将向大家介绍了两种数据类型:double和char.我们还向大家介绍了赋值语句,数学计算,常用函数,输入输出语句和数据文件.

MATLAB表达的运算顺序遵守一定的规则,即优先级高的先执行,优先级低的后执行.运算的优先级总结在表2.11中.

表2.11运算的优先级

30

优先级 1 2 3 4 运算 括号里的内容先运算,从最里面的括号去运算 幂运算,从左向右 乘除法,从左向右 加减法,从左向右 MATLAB语言包括许许多多地的内建函数,帮助我们解决问题.它的函数比C和Fortan语言中的函数要多得多,包括机制独立的画图功能.一些常见的固有函数在表2.8中列出,其他函数将会在以后的章节中介绍.所有MATLAB的函数列表可在在线帮助浏览窗口中得到.

2.14.1 好的编程习惯

每一个MATLAB程序都应让其他熟悉MATLAB编程的人容易理解.所以有一个好的编程习惯十分重要,因为它能使一个程序使用很好时间.过了一个段时间,条件可能改变,程序也可能要改变以适应这些变化.修改这个程序的人可能是其他人而不是这个程序的原作者.这个程序员在修改程序之前必须先理解原程序.

编写清晰,易理解,可维护强的程序要比编写简单的程序要难得多.一个程序员必须发展这方面的能力以证明自己的工作,还有程序必须避免一些常见的错误.下面的指导意见,将有助于你养成好的编程习惯.

1. 尽可能的使用有意义的变量名,一眼就可以看懂,像day,month,year. 2. 给每一个程序创建一个数据字典,以提高程序的可维护性.

3. 变量名一律用小写字母,这样可以不会因大小写不同而造成变量混淆。

4. 在所有的MATLAB赋值语句的后面加上一个分号,用来禁止赋值的重复.在程序调试期间,如果你检验检某个语句的值,可去掉语句后的分号.

5. 如果要在MATLAB和其他程序之间交换数据,那么就要以ASCII格式存储数据.如果数据只应用在此MATLAB中那么,应以mat-file格式存储数据.

6. 以”dat”为扩展名保存ASCII数据以区分MAT文件,MAT文件的扩展名为mat. 7. 用适当的括号使你的表达式清晰,易理解. 8. 当你读取和写入数据时,使用适当的单位

2.14.2 MATLAB总结

下面的总结列举了本章出现的所有特殊符号,命令和函数,后面跟的是简短的描述. 特殊符号 符号 说明 [ ] 数组构造器 ( ) 用来装载下标 ' ' 用来限制一个字符串 , 分开下标,或分开元素 1.防止在命令窗口的重复 ? 2.分开矩阵的行 3.在一行内分开几个赋值语句 % 标志注释的开始 : 克隆运算符 + 数组和矩阵的加法 - 数组和矩阵的减法 .* 数组乘法 * 矩阵乘法 ./ 数组右除法 .\\ 数组左除法 / 矩阵右除法

31

符号 \\ .^ ' ? abs(x) acos(x) angle(x) asin(x) atan(x) atan2(y,x) cos(x)cosx exp(x) log(x) [value,index]=max(x) [value,index]=min(x) mod(x,y)余数, sin(x)sinx sqrt(x) tan(x)tanx rounding(取整)函数 ceil(x) fix(x) round(x) 字符转换函数 char(x) double(x) int2str(x) num2str(x) str2num(x) format short format long format short e format short g format long e format long g format bank format hex format rat format compact format loose format + pi i,j Inf NaN clock 说明 矩阵左除法 数组幂运算 转义运算符命令和函数 且来表示语句太长,转到第二行写 计算x的绝对值 计算x的反余弦函数 计算复数x的幅角 计算x的反正弦函数值 计算x的反正切函数值 返回x中的最大值,和他所处的位置 返回x中的最小值,和他所处的位置 x的平方根 将矩阵中的数转化为字符,矩阵中的元素就不大于127 将子符串转化为矩阵 将整数x转化为字符串形式 将带小数点的数转化为一个字符型数组 将字符串转化为数 保留小数点后4位(默认格式) 保留小数点后14位 带有5位有效数字科学记数法 总共有5个数字,可以用科学记数法,也可不用 带有15位有效数字科学记数法 总共有5个数字,可以用科学记数法,也可不用 美元格式 用16进制表示 两个小整数的比 隐藏多余的换行符 使用多余的换行符 只显示这个数的正负 有15个有效值的π 代表虚数i(?1) 这个符号代表无穷大,它一般情况下是除以0产生的 这个符号代表没有这个数。它一般由数学运算得到的。例如,0除以0。 这个特殊变量包含了当前的年,月,日,时,分,秒,是一个6元素行向量 32

符号 date eps ans char plot semilog Semiloge loglog 说明 包含当前的日期,是用的字符形式 变量名是epsilon的简写。它代表计算能机辨别的两数之间的最小数 常用于存储表达式的结果,如果这个结果没有明确的赋值于某个变量 字符型 函数的x,y均用线性尺度 函数x轴用对数尺度,y轴将用线性尺度 函数x轴用线性尺度,y轴用对数尺度 函数两坐标轴将会都用对数尺度。 2.15 练习

2.1

看下面的数组回答有关问题

?1.1?0.0array1???2.1???1.40.01.10.15.12.1?6.60.30.0?3.52.8?0.41.16.0??3.4? 1.3??0.0?a. b. c. d. array1的大小是多少? array1(4,1)的值是多少?

array1(:,1:2)的大小和值为多少? array1([1 3],end)的大小和值为多少?

2.2

下面的变量名那些合法那些不合法.为什么? a. dog1 b. 1dog c. Do_you_know_the_way_to_san_jose d. _help e. What's_up?

2.3

写出下面的数组的大小和内容.注意后面的数组可能根据前面数组的定义. a. a=1:2:5; b. b=[a' a' a'];

c. c=b(1:2:3,1:2:3); d. d=a+b(2,:);

e. w=[zeros(1,3) ones(3,1)' 3:5']; f. b([1 3],2)=b([3 1],2);

2.4

数组定义如下,写下面的子数组的内容

?1.1?0.0array1???2.1???1.40.01.10.15.12.1?6.60.30.0?3.52.8?0.41.16.0??3.4? 1.3??0.0?a. array1(3,:) b. array1(:,3)

33

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库MatLab编程中文版第二章(7)在线全文阅读。

MatLab编程中文版第二章(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/907885.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: