表明是注释行而不是命令行,计算机不会处理以%开头的任何内容。当然,在命令行后也可以%引导注释语句;注释可以用汉字。MATLAB规定,在键入“help 文件名”时,屏幕上会将该文件中以%起头的最前面几行的内容显示出来,使用户知道如何使用。
? 程序命令部分以clear、close all等语句开始,用来清除掉工作空间中原有的变量和
图形,避免其他已执行的程序残留数据对本程序的影响。 CLEAR removes all variables from the workspace. CLOSE ALL closes all the open figure windows.
(2)程序主体
? 如果文件中有在子程序中与主程序共用的全局变量,应在程序的起始部分注明。其
语句是:
global
变量名1
变量名2
?
? 为改善可读性,应注意流程控制语句的缩进及与end的对应关系。
? 程序中必须都用半角英文字母和符号(只有引号括住的部分和%号后的内容可用汉
字),否则程序执行不通甚至会死机,因此一般在键入程序时,最好从头到尾用英文,在程序调试完毕后再插入汉字。
(3)文件名及文件存储
? 按照MATLAB标志符要求起文件名,并加上后缀m。 ? 文件名即为MATLAB的调用命令。 ? 文件名中不允许用汉字。
? 存储目录应位于MATLAB的搜索路径下。 ? MATLAB的搜索路径不应出现汉字路径名。 (4)程序执行
完成主程序文件编制后,在MATLAB的命令窗中键入此程序的文件名后,系统就会执行文件中的程序,主程序文件中的语句将对工作空间中的所有数据进行运算操作。 2、示例
列出求素数的程序。素数即为只能被它自身和1除净的数。程序如下:
%求素数(prime number)的程序 clear,close all
%清除工作空间中原有的变量和图形
N=input(‘N=’),x=2:N; for u=2:sqrt(N)
%列出从2到N的全部自然数 %依次列出除数(最大到N的平方根) %找到能被u除净而u不等于x的数的序号 %剔除该数
%循环结束,显示结果
n=find(rem(x,u)==0 & x~=u);
x(n)=[]; end,x
以prime.m为名存入系统即可执行。给出N=40,结果为 x=2 3 5 7 11 13 17 19 23 29 31 37 3、常用的人机交互命令
在执行主程序文件时,往往希望在适当的地方对程序的运行进行观察或者干预(尤其在
调试程序的时候),这时就需要人机交互命令。介绍常用的下面几条: (1)input('提示符’)
程序执行到此处暂停,在屏幕上显示引号中的字符串。要求用户
输入数据。如程序为X=input(‘X=’),则会在屏幕上显示X=,输入的数据将赋给X。数据输入后,程序继续运行。Input命令也可以接受字符,其格式为Y=input(‘提示符’,’s’),此时Y将等于输入的字符串。 (2)pause(n)
程序执行到此处,暂停n秒,再继续执行。如果没有括号参数,则等待
用户键入任意键后才继续执行。 (3)echo on(off)
一般情况下,M文件中的命令不会显示在屏幕上。而在命令echo on
之后,会在执行每行程序前先显示其内容。 (4)keyboard
程序执行到此处暂停,在屏幕上显示字符K,并把程序的输入和执行权交
给用户(键盘)。用户可以像在普通MATLAB命令窗口中那样进行任何操作(例如,检查中间结果等)。如果需要系统恢复运行原来的程序,只需要键入return。在M文件中设置该命令,有利于进行程序调试以及临时修改变量内容。 (5)Ctrl+C 二、函数文件 1、格式特征
(1)由function起头;
(2)function后跟函数名,且必须与文件名相同; (3)可以有输入输出变量进行变量传递;
(4)除非用global声明,程序中的变量均为局部变量,不保存在工作空间中。
强行终止程序的运行。当程序有错运行时间太长时,可用此方法终止。
(5)在键入“help 文件名”时,屏幕上显示的内容是位于function语句后对文件的注释部分(而help 主程序文件时显示的内容是文件罪开头的注释语句)。 2、示例
设已有函数文件mean.m 键入 type mean 得到
function y=mean(x)
%MEAN求平均值。对于向量,mean(x)返回该向量x中各元素的平均值 %对于矩阵,mean(x)是一个包含各列元素平均值的行向量 [m,n]=size(x);
if m==1 M=n;
end
%处理单行向量
y=sum(x)/m
分析:文件的第一条语句定义了函数名、输入变量x以及输出变量y。如果没有这条语句,该文件就成为程序文件,而不再是函数文件。输入变量和输出变量都可以由若干个,但必须在第一条语句中明确列出。
function语句后由%引导的注释部分,会在help mean命令后显示于命令窗口中。 变量m,n,y都是函数mean的局部变量,当mean.m文件执行完毕,这些变量值会自
动消失,不保存在工作空间中。如果在该文件执行前,工作空间中已经有同名的变量,系统会把两者看作各自无关的变量,不会混淆。这样,调用子程序时就不用考虑其中的变量与程序变量冲突的问题了。如果希望把两者看成同一变量,则必须在主程序和子程序中都加入global语句,对此共同变量进行声明。
在给输入变量x赋值时,应把x代换成主程序中的已知变量。
三、文件编辑器及程序调试
MATLAB提供的编辑器把编辑与调试结合在一起。一般来说,主程序比较好调试,因为MATLAB差错能力很强,配合工作空间中变量的保存和显示功能,不需要专门的调试命令,调试也可以很方便地进行。
需要用调试命令的主要是函数程序,因为在函数程序出错而停机时,其变量不被保存。虽然它也会指出出错的语句,但是因为子程序中的变量在程序执行完毕后会自动消失,其他现场数据都无记录,会给调试带来很大困难。解决此问题可以采用下列措施:
? 把某些分号改为逗号,使中间结果能够显示在屏幕上,作为差错的依据。
? 在子程序中适当部位加keyboard命令。此处,系统会暂停而等待用户键入命令。
这时,子程序中的变量还存在于工作空间中,可以对它们进行检查。
? 将函数文件的第一行前加%号,使它成为程序文件,进行初步调试。第一行中的输
入变量可改为input或者赋值语句来输入,调试好后再改回函数文件。
? MATLAB共有11条调试命令,如dbstop设置断点,dbclear清除断点等。一般来
说,当程序不太长时,用调试命令反而麻烦。
实验名称: 利用MATLAB模拟点电荷电势的分布
一、 实验目的
1.熟悉单个点电荷及一对点电荷的电势分布情况; 2.学会使用MATLAB进行数值计算,并绘出相应的图形; 二、实验原理
根据库仑定律:在真空中,两个静止点电荷之间的作用力与这两个电荷的电量乘积成正比,与它们之间距离的平方成反比,作用力的方向在两个电荷的连线上,两电荷同号为斥力,异号为吸引力,它们之间的力F满足:
?Q1Q2?F?kR (式1)
R2由电场强度E的定义可知:
?kQ?E?2R (式2)
R对于点电荷,根据场论基础中的定义,有势场E的势函数为
U?kQ (式3) R在MATLAB中,由以上公式算出各点的电势U,可以用MATLAB自带的库函数绘出相应的电势分布情况。 三、MATLAB基本语法 (一)标识符与数
标识符是标志变量名、常量名、函数名和文件名的字符串的总称。 (二)矩阵及其元素的赋值
赋值就是把数赋予代表常量或变量的标识符。MATLAB中的变量或常量都代表矩阵,标量应看作1×1价的矩阵。赋值语句的一般形式为 变量=表达式(或数) 列如,输入语句 a=[1 2 3;4 5 6;7 8 9] 则显示结果为 a=1 2 3 4 5 6 7 8 9