首页 > 编程知识 正文

matlab编程怎么开始,matlab编程注意事项

时间:2023-05-04 19:49:24 阅读:52881 作者:1024

上个学期我学习了matlab的知识,但是这个学期重用的时候,我发现我已经几乎忘记了。

于是,我决定重新开始并记录下来。 另外,自己稍后检查补货也很方便!

m文件编程

脚本文件

matlab有自己的命令行窗口,可以直接在命令行窗口中输入简单的命令,但随着命令行的增加和命令本身的复杂性的增加,使用命令行变得有点不方便。 在这种情况下,需要脚本文件。 脚本文件可以说是matlab指令集合的封装。

函数文件

函数文件以function开始,以end结束。 这也是区别于脚本文件的地方。

在函数后定义输出参数、函数名称和输入参数,例如:

function [x,y,z]=math_count(a,b,c ) ]

x、y和z是括在框中的输出参数,math_count是函数名称,a、b和c是括在括号中的输入参数。

没有参数也可以。 例如:

功能打印机结果(x,y ) )。

打印结果是函数名称,x和y是输入参数,没有输出参数。

数据类型

matlab有六种基本数据类型:数字类型、逻辑类型、字符串、函数句柄、结构和单元格数组。 这里简单介绍一下前四种。

数值类型

基本的数值类型有整数类型和浮点数类型。 其他数值类型包括复数类型、无限量(Inf )和非数值量(NaN )。 后两个是matlab的特征型。 当然请记录下来。

多种类型

复数有实部和虚部两个部分,matlab中默认使用I和j作为复数的虚部标志。 创建复数时,以复数形式直接输入,或使用函数complex。

z=1 2i %以复数形式输入

输出结果:

z=complex (x (2,3 ) %用complex ) x,y函数输入

输出结果:

使用z=complex(2) %complex ) x,如果x是实数,则z=x 0i,如果x是复数,则z=x

输出结果:

无限量(Inf )和非数值量(NaN )

Matlab中使用的Inf和-Inf分别表示正无限量和负无限量,NaN表示非数值量。

正负无限量通常是运算溢出而不是数值量的结果,是0/0或Inf/Inf的非正常运算的结果,这两个NaN不同。

Inf和NaN是Matlab的特殊变量,其他Matlab还有几个特殊变量

ans :默认情况下用作保存运算结果的变量名称

(pi )圆周率

eps :机器零阈值,Matlab中的最小数量

2 .逻辑类型

Matlab将任意一个0以外的值设为真,将输出设为1,将零设为假,将输出设为0。

运算逻辑类型数据需要关系运算符和逻辑运算符。

Matlab的关系运算符与c/c几乎相同,只是不等号不同。 在抄送中不等号是!=,在Matlab中不等号为~=。

3 .字符和字符串

字符和字符串分别是字符数组和字符串数组中的文本。

字符数组为c='Hello Word!' 的文字序列

字符串数组是文本片段的容器,提供一组用于将文本作为数据进行处理的函数。 从R2017a开始,字符串也可以用双引号创建。 例如,str='You are best!'

字符串函数

从R2016b开始,可以使用字符串数组string代替字符数组。 根据官方文档,还可以通过标准数组运算将字符串数组配对

也可以索引、重构和合并,并使用运算符将文本添加到字符串中。 (一切都朝着c方向哦) ) )

4 .函数句柄

函数句柄是一种间接调用函数的方法,与给函数加别名相同。

例如,如果有一个名为myfunction的函数,请在此指定语句

f=@myfunction %f是句柄,可以从f调用myfunction

可以使用函数句柄构建匿名函数,也可以指定回调函数。 还可以使用函数句柄将一个函数传递给另一个函数,或从主函数内部调用局部函数

以下是通过函数句柄间接调用函数的示例。

在命令行窗口中输入:

Handle=@sin; %您也可以自己创建函数,并通过函数句柄间接调用x=0:pi/4:pi。使用%冒号创建一维数组。 0是第一个数,每次以pi/4为单位增加。 pi是最后的数y=handle(x )

输出结果:

也许也有学生认为可以直接呼叫。 确实不错,但函数句柄有更多的优点。 举几个例子

提高运行速度。 matlab每次对函数的调用都必须搜索所有路径,但函数句柄可以减少搜索并提高执行速度。

更容易使用。 例如,我运行了这个目录后

,创建了本目录的一个函数句柄,当我转到其他的目录下的时候,创建的函数句柄还是可以直接调用的,而不需要把那个函数文件拷贝          过来。因为你创建的函数句柄中已经包含了路径。控制流

Matlab的控制流也与c/c++大体相同,唯一要注意的是每个条件都有相应的end关键字。

顺序结构

选择结构

if—end

if—else—end

if—elseif—else—end

示例:

新建脚本文件,保存为exe1_1

x=input('enter''x'':');%input函数返回你输入的整数,提示信息用''括起来,如果想要输出单引号,两个单引号'' ''即可if(x>0)

y=1;

elseif(x==0)

y=0;else y=-1;

end%不要忘记加end,Matlab不会自动补全end,最好一开始就写下来,养成良好的编程习惯至关重要

disp(y)%disp作为输出函数

在命令行窗口调用exe1_1,输入-5

得到结果:

switch—case结构

注意Matlab与c/c++语言的switch-case结构不一样:只要条件满足,立即返回,这也是为什么不用加break的原因。

示例:新建脚本文件,保存为ex1_2

month=3;switchmonthcase {3,4,5}

season='spring'

case {6,7,8}

season='summer'

case {9,10,11}

season='autumn'otherwise

season='winter'end

得到结果:

注意

1.M文件的搜索路径必须与当前路径一致,否则运行会出错,搜索路径即保存M文件的位置。可以直接修改当前路径与搜索路径一致,也可以添加搜索路径,这样就一劳永逸了。

2.如果遇到不认识的函数,可以利用help/doc命令在命令行查找,格式为help/doc function,function为函数名,养成查阅文档的习惯很重要!

循环结构

while,for语句

break、continue、return ——行尾可以不用加分号

每一个关键字后面都要有与之对应的end关键字

范例:

使用0.618法(黄金分割法)极小化f(t)=exp(-t)+exp(t),区间为[-1,1]。(即逼近函数在已知区间的极小值,找到对应的t

0.618法主要思想:

0.618法在给定区间[a,b]内适当插入两点a1,a2,并计算其函数值。

a1,a2将区间分成三段,通过函数值大小的比较,删去其中一段,使搜索区间得以缩小,

然后再在保留下来的区间上作同样的处理,如此迭代下去,从而得到极小点的数值近似解。

0.618法主要步骤:

1.在区间[a,b]内分别按照0.618和0.382的比例处取点a1 ,a2, 把[a,b]分为三段。

2.如果f(a1)>f(a2),令a=a1,a1=a2,a2=a+0.618*(b-a)

3.如果f(a1)

4.如果满足迭代条件或者超出给定迭代次数,程序终止,否则继续运行下去。

新建名为fai.m的函数和zero_soe.m的函数

1       function z=fai(t)2               %fai函数3               %给定函数4               z=1*exp(-t)+1*exp(t);5              end

1             function [k] =zero_soe(a0,b0,iter,tol)2             %UNTITLED3 精确线性搜索之0.618法3             %a0,b0分别代表左端点,右端点4              %iter代表给定的迭代次数5             %tol代表误差限6             m=a0+0.382*(b0-a0); %试探点lameda07             n=a0+0.618*(b0-a0); %试探点u08             ym=fai(m);9             yn=fai(n);10             count=0; %现有的迭代次数11             while(countyn)13              if(b0-m<=tol)14              k=n;15              return;16             else

17              a0=m;18              m=n;19              ym=yn;20              n=a0+0.618*(b0-a0);21              yn=fai(n);22              count=count+1;23 end24              else

25              if(n-a0<=tol)26              k=m;27             return;28              else

29               b0=n;30              n=m;31             yn=ym;32              m=a0+0.382*(b0-a0);33             ym=fai(m);34              count=count+1;35 end36 end37 end38             if(count>=iter)39             disp('迭代次数超过给定次数!') ;40 end41             end

得到结果:

通过求导可知函数的极小值对应的t等于0,可知极小化的结果是正确的。

(皆大欢喜[]~( ̄▽ ̄)~*)

常用的函数命令

输入命令clc:清除命令行窗口

clf :即clear figure,清楚图形窗口

clear:清除工作区的变量,clear all是清除全部变量

format:设置命令行窗口显示格式

iskeyword:确认输入是否为关键字,如果没有输入,则输出全部的关键字

who:显示当前变量名列表

whos:显示变量详细列表

which:查看关键字的路径帮助help:命令行窗口中函数的帮助

doc:帮助浏览器中的参考页

demo:帮助浏览器中查看示例

lookfor:在所有帮助条目中查看关键字

常用快捷键

Ctrl+R :注释(对多行有效)

Ctrl+T :取消注释(对多行注释有效)

Ctrl+Z :取消上一次操作

Ctrl+I     :自动缩进(对多行有效)

Ctrl+[     :减少缩进(对多行有效)

Ctrl+]     :增加缩进(对多行有效)

↑光标键 :选择最近的一次命令

Esc:清除当前行

参考资料:

Matlab 2016a自学一本通 /jqdbq,韩晶编著 ~北京:电子工业出版社,2016,12

还没有写完,以后慢慢补吧~

内容来源于网络如有侵权请私信删除

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。