一、引言

Matlab可以类似C/C++语言或者Python语言一样可以编写程序以完成某些功能。Matlab程序包含三大程序结构,分别是顺序结构、选择结构和循环结构。本文主要给出了Matlab程序的循环结构的语法规则及相关的Demo。Matlab程序结构之循环结构主要包括for循环和while循环。下面将逐一进行讲解。

二、for…end循环结构

1.语法:
for…end循环用于事先已知循环次数的情形,其语法如下:

for 循环变量 = 起始值:步长:终止值循环体
end

2.注意事项
(1)步长的缺省值是1。步长可以在正实数或负实数范围内任意指定,对于正数,循环变量的值大于终止值时,循环结束;对于负数,循环变量的值小于终止值时,循环结束;
(2)for和end语句中间的所有语句会自动缩进;
(3)for循环可以嵌套使用;
(4)不能通过内部对循环变量重新赋值而进行反复的循环或停止循环;
(5)循环中可以使用break或者continue中断或改变循环,其中
– break用来实现:跳出本层循环体
– continue用来实现:结束本次循环而进入当前层循环的下一次循环
3.for循环示例程序
Demo 1:一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。
参考代码:

clear all
clc
tic%开始计时
for m = 100 : 999m1 = fix( m / 100 );           m2 = rem( fix( m / 10 ), 10 );     m3 = rem( m, 10 ); if m == m1^3 + m2^3 + m3^3disp( [ num2str( m ) ] )end
end
toc%计时结束,显示程序的运行时间

运行结果:

153
370
371
407
时间已过 0.038234 秒。

也可以使用如下代码来实现,即通过数组来实现,并使用了数组元素过滤的手段从数组中提取水仙花数。避免了使用循环。

clear all
clc
tic%开始计时
Arr = [ 100 : 999 ];
Arr100 = fix( Arr / 100);
Arr10  = rem( fix( Arr / 10), 10 );
Arr1   = rem( Arr, 10 );
ArrN   = Arr100.^3 + Arr10.^3 + Arr1.^3;
data   = Arr .* ( Arr == ArrN );%获取数组Arr中的水仙花数,非水仙花数设置为0
Arr( find( data > 0 ) )%把水仙花数单独显示出来
toc%计时结束,显示程序的运行时间
format compact

运行结果:

ans =153   370   371   407
时间已过 0.004718 秒。

提示:通过本例可以发现,有些循环也可以通过数组来实现。而且通过数组来实现可以有效提高运行速度。另外运行时间会根据系统的状态而得到不同的数据!!!

Demo 2:若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求1到10000之间的全部完数。
参考代码:

clear all
clc
for m = 1 : 10000s = 0; for k = 1 : m/2if rem( m, k ) == 0s = s + k;endendif m == sdisp( [ '完数:', num2str( m ) ] );end
end

运行结果:
完数:6
完数:28
完数:496
完数:8128

**Demo 3**:把一个矩阵中各列元素改成列元素乘以列编号的平方。
此例子涉及了循环变量为矩阵的情形。如果循环变量等于一个矩阵,执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。
参考代码:
```matlab
clear all
clc
Arr = [ 1 : 2 : 6; 3 : 5; 1 : 3 ]
A = zeros( size(Arr) );
k = 1;
for i = ArrA( :, k ) = i * k^2;k = k + 1;
end
A

运行结果:

Arr =1     3     53     4     51     2     3
A =1    12    453    16    451     8    27```
**Demo 4**:在1到1000之间找前两个完数(break的例子)。
break的功能是结束本层循环。
参考代码:
```matlab
clear all
clc
count = 0;%计算器,记录完数的个数
for m = 1 : 10000s = 0; for k = 1 : m/2if rem( m, k ) == 0s = s + k;endendif m == sdisp( [ '完数:', num2str( m ) ] );count = count + 1;if count == 2 %当计数器等于2的时候,结束循环break;endend
end

Demo5: 把一个数组中的负数改成其平方,正数保持不变。(continue的例子)
continue的用法与C/C++语言类似,即满足给定的条件后,跳过continue后面的代码而进入下一次循环。
参考代码:

clear all
clc
Arr = [ 1, -5, -3, 6, 9 ]
for i = 1 : length( Arr )if Arr( i ) > 0continue;endArr( i ) = Arr( i )^2;
end
Arr

运行结果:

Arr =1    -5    -3     6     9
Arr =1    25     9     6     9

提示:本题按上述方法实现,是为了演示continue的用法。也可以使用其它的实现方法,即判断元素是否小于0。

三、while…end循环结构

1.语法:
while…end循环用于事先已知循环次数的情形,其语法如下:

while  条件表达式循环体语句组
end

若表达式为真,则执行循环体的内容,执行后再判断表达式是否为真,若为假则跳出循环体,否则继续执行循环体。
2.while循环示例程序
Demo 6:从键盘输入若干个正整数,当输入0时结束输入,求这些数的平均值和它们之和。
参考代码:

clear all
clc
sum = 0;
count = 0;
val = input('Enter a number (end in 0):');
while ( val ~= 0 )sum = sum + val; count = count + 1;val = input('Enter a number (end in 0):');
end
if ( count > 0 )    disp( [ '和:', num2str( sum ) ] );disp( [ '平均值:', num2str( sum/count ) ] );
end

运行结果:

Enter a number (end in 0):1
Enter a number (end in 0):5
Enter a number (end in 0):8
Enter a number (end in 0):6
Enter a number (end in 0):9
Enter a number (end in 0):0
和:29
平均值:5.8

注意:
对于for循环,很多时候都可以使用数组的运算替代循环,这样能够有效提高运行速度,例如Demo 1中的例子。

MATLAB程序设计之循环结构入门详解相关推荐

  1. c语言循环的三个要素是什么意思,什么是循环结构知识点详解

    循环结构是程序设计中最能发挥计算机特长的程序结构.那么你对循环结构了解多少呢?以下是由小编整理关于什么是循环结构的内容,希望大家喜欢! 循环结构的简介 循环结构可以看成是一个条件判断语句和一个向回转向 ...

  2. java中循环语句_Java语法基础之循环结构语句详解

    一.循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循 ...

  3. matlab设置非平坦结构元,详解MATLAB/Simulink通信系统建模与仿真图书信息

    第1章 Simulink基础 1.1 Simulink简介 1.2 运行Simulink演示程序 1.2.1 运行房屋热力学系统演示模型 1.2.2 房屋热力学系统模型说明 1.2.3 其他Simul ...

  4. 用matlab画椭圆曲线方程,椭圆曲线入门详解

    转载请注明http://blog.csdn.net/boksic 如有疑问欢迎留言 如果不知道数学上的群.循环群等概念,可以先了解ElGamal加密算法 后再回过来椭圆曲线加密 这两个算法有共通之处, ...

  5. MATLAB绘制平面填充图入门详解

    一.引言 在画图的时候,为了让图形更加清晰突出,往往需要对某一条或几条曲线围成的区域进行填冲颜色,以得到填充图.对于平面图形的填充,可以matlab的命令fill和area等实现. 二.fill命令的 ...

  6. Matlab S-Function函数入门详解

    Matlab S-Function函数入门详解 Part I: 所谓s函数是system Function的简称, 用它来写自己的simulink模块. s函数可以用matlab.C.C++.Fort ...

  7. gcn 图卷积神经网络_GCN图卷积网络入门详解

    字幕组双语原文:[GCN]图卷积网络(GCN)入门详解 英语原文:Graph Convolutional Networks (GCN) 翻译:听风1996.大表哥 在这篇文章中,我们将仔细研究一个名为 ...

  8. FFmpeg入门详解之119:FFmpeg的SDK编程回顾总结并操练

    3.FFmpeg的SDK编程回顾总结并操练 参考课程:"FFmpeg4.3--系列5--SDK二次开发详解与实战" FFmpeg主要框架 FFmpeg骨架:"八大金刚&q ...

  9. SQL注入攻防入门详解

    转载自:http://www.cnblogs.com/heyuquan/archive/2012/10/31/2748577.html SQL注入攻防入门详解 =============安全性篇目录= ...

最新文章

  1. vs2005中文的,可是有180天的适用期,哪位高手能破了啊
  2. PMCAFF | O2O防刷单并没那么难,看完这些你也会反作弊
  3. .Net Core 定时任务TimeJob
  4. ubuntu上搭建php,ubuntu10.04上搭建php网站运行环境
  5. wpe使用方法(详细)(--新加秒10图)(10号继续可用)
  6. [Swift通天遁地]一、超级工具-(13)使用PKHUD制作各种动态提示窗口
  7. 算法:求1+2+3+...+n
  8. cboard企业版源码_数据可视化BI平台——CBoard的部署与使用(笔记整理)
  9. 印象笔记mac版 同步问题_印象笔记国际版无法登陆/同步问题
  10. mysql表锁ix_S、X、IS、IX数据库锁机制 很详细的教程,简单易懂
  11. POI导入Excel文件(包含.xsl和.xslx文件兼容问题)
  12. 【报告分享】2021小红书投放运营指南书-小红书(附下载)
  13. 使用matplotlib绘制折线图(绘制一天当中的气温变化)
  14. 深度之眼(十七)——Python标准库
  15. 北京的味道-胡赳赳电子书下载
  16. 行驶证识别sdk的功能
  17. 教育部公布研考违规违法行为举报电话
  18. python爬虫妹子图抓取
  19. 【毕业设计】机器视觉答题卡识别系统 - python 深度学习
  20. 电炉下载该内容尚未提供权利证明,无法提供下载。

热门文章

  1. 网络工程师的python之路pdf_网络工程师的Python之路---Ansible篇
  2. C++里已知三个三维点,求他们的平面方程,怎么做?
  3. 如何杀掉“熊猫烧香”
  4. truth discovery process
  5. web 端 打开qq对话框
  6. java swing的弹窗_java Swing实现弹窗效果
  7. 基于 FPGA Vivado 的数字钟设计(附源工程)
  8. 求某门课号的成绩高于某个同学(例如李勇)任意一门成绩的学生学号和成绩
  9. Python 爬虫实战入门——爬取汽车之家网站促销优惠与经销商信息
  10. MySQL启动和关闭命令总结