计算机程序就是计算机指令的集合,不同的编程语言指令与功能是不一样的.MATLAB语言是一种面向对象的高级语言,它具有编程效率高、易学易用的优点.

MATLAB与其它大部分高级语言一样,有它自己的控制流语句.控制流极其重要,因为它使过去的计算影响将来的运算。MATLAB提供如下几种控制流结构:For循环,While循环,If-Else-End结构和switch-case-end结构。由于这些结构经常包含大量的MATLAB命令,故经常出现在M文件中.MATLAB支持的控制流语句和C语言支持的控制流语句在调用格式上非常相似.

1.For 循环

For循环允许一条语句或一组语句被重复执行预先指定的次数。For循环的一般形式是:

for  x = array

语句

end

在for和end语句之间的语句按数组中的每一列执行一次。在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:, n)。例如,

for n=1:10

x(n)=sin(n*pi/10);

end

x

x =

0.3090    0.5878    0.8090    0.9511    1.0000    0.9511    0.8090    0.5878    0.3090    0.0000

换句话,第一语句是说:对n等于1到10,执行所有语句,直至下一个end语句。第一次通过For循环n=1,第二次,n=2,如此继续,直至n=10。在n=10以后,For循环结束,然后执行end语句后面的任何命令.注意,该循环结束后,n=10.

For循环的其它重要方面是:

(1)For循环不能用For循环内重新赋值循环变量n来终止。

for n=1:10

x(n)=sin(n*pi/10);

n=9;

end

x

x =

0.3090    0.5878    0.8090    0.9511    1.0000    0.9511    0.8090    0.5878    0.3090    0.0000

n

n=

9

执行过程是这样的:

n=1,

x(1)=sin(pi/10),

n=9,

n=2,

x(2)=sin(2*pi/10),

n=9,

n=3,

...,

n=10,

x(10)=sin(10*pi/10),

n=9.

循环结束后,n=9.

(2)在For循环内接受任何有效的MATLAB数组。

data=[3  9  45  6;  7  16  -1  5]

data =

3     9    45     6

7    16    -1     5

for n=data

x=n(1)-n(2)

end

x =

-4

x =

-7

x =

46

x =

1

(3)For循环可按需要嵌套。

for n=1:5

for m=1:5

A(n,m)=n^2+m^2;

end

disp(n)

end

1

2

3

4

5

A

A =

2     5    10    17    26

5     8    13    20    29

10    13    18    25    34

17    20    25    32    41

26    29    34    41    50

(4)当有一个等效的数组方法来解给定的问题时,应避免用For循环。例如,上面的第一个例子可被重写为

n=1:10;

x=sin(n*pi/10)

x =

0.3090    0.5878    0.8090    0.9511    1.0000    0.9511    0.8090    0.5878    0.3090    0.0000

两种方法得出同样的结果,而后者执行更快,更直观,要求较少的输入。

(5)为了得到最大的速度,在For循环(While循环)被执行之前,应预先分配数组。例如,前面所考虑的第一种情况,在For循环内每执行一次命令,变量x的大小增加1。迫使MATLAB每通过一次循环要花费时间对x分配更多的内存。为了消去这个步骤,For循环的例子应重写为

x=zeros(1,10);

for n=1:10

x(n)=sin(n*pi/10);

end

现在,只有x(n)的值需要改变。

例1 相传古代印度国王要褒奖他的聪明能干的宰相达依尔(国际象棋发明者),问他要什么?达依尔回答:“陛下只要在国际象棋棋盘的第一个格子上放一粒麦子,第二个格子上放二粒麦子,以后每个格子的麦子数都按前一格的两倍计算。如果陛下按此法给我64格的麦子,就感激不尽,其他什么也不要了。”国王想:“这还不容易!”让人扛了一袋麦子,但很快用光了,再扛出一袋还不够,请你为国王算一下共要给达依尔多少小麦?(1小麦约颗)

解 麦粒总数为

程序如下:

a=1;

s=0

for i=1:64

s=s+a;

a=2*a;

end

s=s/1.4/10^8

运行后得:

s=

1.3176e+011

例2 公元前五世纪我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?

解 设 x:鸡翁数,则x的范围:0~19

y:鸡母数,则y的范围:0~33

z:鸡雏数,则z的范围:0~100

则:

x+y+z=100

5x+3y+z/3=100

这是一个不定方程。

for x=0:19

for y=0:33

for z=0:100

if (x+y+z==100)&(5*x+3*y+z/3==100)

d=[x,y,z]

end

end

end

end

运行后得结果:

d =

0    25    75

d =

4    18    78

d =

8    11    81

d =

12     4    84

2.While  循环

与For循环以固定次数求一组命令的值相反,While 循环以不定的次数重复执行一组语句。While循环的一般形式是:

while 表达式1

语句1

end

只要表达式1里的所有元素为真,就执行while和end之间的语句1,否则,就结束循环。通常,表达式的值给出一个标量值,但数组值也同样有效。在数组情况下,当数组的所有元素为真(值不等零)时,就执行语句1,数组中有一个元素为假(值为零),就结束循环。

例3 按下面的公式计算:

使误差小于给定的.

解 把作为误差,程序如下:

error=input('请输入误差:');

x=1;

y=0;

n=1;

while x>error

y=y+1;

x=x/n;

n=n+1;

end

e=y

运行如下:

请输入误差:0.001

e =

2.7181

3.IF-ELSE-END 结构

很多情况下,命令的序列必须根据关系的检验有条件地执行。在编程语言里,这种逻辑由某种If-Else-End结构来提供。最简单的If-Else-End结构是:

if  表达式1

语句1

end

如果在表达式1中的所有元素为真(非零),那么就执行if和end语言之间的语句1。

假如有两个选择,If-Else-End结构是:

if  表达式1

语句1

else

语句2

end

在这里,如果表达式1为真,则执行语句1;如果表达式是假,则执行语句2。

当有三个或更多的选择时,If-Else-End结构采用形式

if 表达式1

语句1

elseif 表达式2

语句2

elseif 表达式3

语句3

elseif 表达式4

语句4

elseif ……

else

语句

end

如果表达式1为真,则执行语句1,结束循环;如果表达式1为假,则检验表达式2,如果表达式2为真,则执行语句2,结束循环;如果表达式2为假,则检验表达式3,如此下去,如果所有表达式都为假时,则执行最后的语句。即只执行第一个真值表达式相关的语句;接下来的表达式不检验,跳过其余的If-Else-End结构。而且,最后的else命令可有可无。

4.switch-case-end结构

如果在一个程序中,必须针对某个变量不同取值情况进行相应操作,switch语句比if else语句更方便。switch语句的一般形式为:

switch 分支条件(数值或字符串)

case  数值(或字符串)条件1

语句1

case  数值(或字符串)条件2

语句2

case  数值(或字符串)条件3

语句3

case  ...

...

otherwise

语句

end

其中分支条件可以是一个函数、变量或者表达式.如果条件1与分支条件匹配就执行语句1,退出循环;否则,检验条件2,如果条件2与分支条件匹配执行语句2,退出循环;否则,检验条件3,...,当所有条件都不与分支条件匹配时就执行最后的语句。注意otherwise是可以省略的。

例4 在图形界面上放置一个弹出式菜,点击弹出式菜单可以设置曲线颜色。

解:程序如下:

x=linspace(-6,6,50);

y=sin(x);

h=plot(x,y,'linewidth',4);

h0=uicontrol('position',[600,500,100,30],...

'style','popupmenu',...

'string','红色|蓝色|黄色|黑色|青色',...

'callback',...

['v=get(h0,''value'');',...

'switch v;',...

'case 1;',...

'set(h,''color'',''r'');',...

'case 2;',...

'set(h,''color'',''b'');',...

'case 3;',...

'set(h,''color'',''y'');',...

'case 4;',...

'set(h,''color'',''k'');',...

'case 5;',...

'set(h,''color'',''c'');',...

'end;']);

初学Matlab编程相关推荐

  1. 学python哪个app比较好_初学python编程,有哪些不错的软件值得一用?

    初学python编程,有哪些不错的软件值得一用? 萧楚故人 发表于 2020-7-17 00:17:55 只看该作者 只看大图 倒序浏览 阅读模式 10 19832 下载好向圈APP可以快速联系圈友 ...

  2. 30多个实用matlab编程技巧

    感谢关注懂科学的程序员公众号!如果公众号文章对您有帮助,别忘了点击分享和"在看"哦!若您对公众号有什么意见或建议,请在公众号中回复或在任意文章底部留言! 今天给大家介绍一些编程小技 ...

  3. Matlab编程与数据类型 -- 单元数组

    Matlab编程与数据类型 – 单元数组

  4. matlab 天线设计 泰勒加权_微带天线设计尺寸MATLAB编程及其仿真验证

    龙源期刊网 http://www.qikan.com.cn 微带天线设计尺寸 MATLAB 编程及其仿真 验证 作者:杨小敏 母玉泽 严月 郭小康 马波 张栋 莫骄弟 来源:<中国科技博览> ...

  5. MATLAB编程与应用系列-第2章 数组及矩阵的创建及操作(4)

    本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:156204968@qq.com. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于 ...

  6. matlab if语句多个执行举例,初学Matlab,有两个语句,if语句和switch语句,有两个例子哪位大神能帮我讲讲...

    问题描述: 初学Matlab,有两个语句,if语句和switch语句,有两个例子哪位大神能帮我讲讲 if logical_expression statements elseif logical_ex ...

  7. python编程用什么电脑好-初学Python编程看哪些书比较好?

    原标题:初学Python编程看哪些书比较好? 我推荐你一些学习Python编程适合看的书,你可以试着看看是不是可以看懂,是不是感兴趣......书中藏着你想要的答案,下面就为大家揭秘学习Python编 ...

  8. matlab编程小结

    最近在用matlab处理一些开源数据,需要用到matlab编程. 之前学习matlab编程不够系统和全面,对很多函数不太了解.数字图像处理和矩阵的一些常用处理居然不太熟悉,停留在学习的舒适区,有点不应 ...

  9. matlab编程风格

    matlab编程风格 参考博客:https://blog.csdn.net/yuandm819/article/details/52453674?utm_medium=distribute.pc_re ...

最新文章

  1. Kibana——数据图形化制作
  2. 自顶向下的语法分析(修改)
  3. 数字图像处理:第二十二章 基于模型的编码
  4. poj 1283(递推ordp)
  5. php实现文本替换,php 如何实现文字替换
  6. Vue 脚手架配置代理
  7. 数的计算(洛谷-P1028)
  8. Android:通过startActivityForResult方法来得到Activity的回传值
  9. xml+javascript实现简单图片轮换
  10. 大厂首选,为什么 SRE 比传统运维更抢手?
  11. android office转pdf插件,office另存为pdf插件下载
  12. LncRNADisease:IncRNA相关疾病数据库简介
  13. AD9833 实验总结
  14. 化妆品选购指南_痘痘肌专属
  15. openBravo数据库结构分析
  16. Photoshop设计精讲精练笔记(二)
  17. win10 ie浏览器卸载后无法重启,试了网上各种方法都无法重启
  18. 用C语言对一元二次方程求解
  19. 微信小程序简易评分样式
  20. Arcgis如何让其显示中文(英文)

热门文章

  1. 计算机考研408-2009
  2. STM32 驱动 ESP8266 WIFI 模块
  3. HTML怎么制作镂空文字遮罩,用纯 CSS 实现镂空效果
  4. 【speaking】TPO1-48口语手册(所有的文本词汇+短语)
  5. 【devops】八、集成Harbor
  6. 使用 markdown语法绘制流程图
  7. 互动应用开发p5.js——WebGL太阳系
  8. 使用 Python 实现欧姆定律(Ohm‘s Law)及代码实现
  9. 基站侧与核心网侧进行交互涉及PLMN和PLMN ID换算及其代码实现
  10. Java大数据-Hadoop-HDFS客户端操作文件更名和移动