MATLAB6:M文件和控制流


一、实验目的

  1. 熟悉运用MATLAB的控制指令。
  2. 理解M脚本文件和函数文件的本质区别。
  3. 能够运用所学知识,编制程序解决一般的计算问题。

二、实验内容

  1.for循环结构及注释

for x=array
   (commands)
end

A、x为循环变量,(commands)为循环体
B、X依次取array中的元素,每取一次,执行一次commands,直到x大于array中的最后一个元素
C、循环次数确定

  2.使用for循环的注意事项
A、在for后面的表达式中的数组可以是任何合法的MATLAB数组
B、 应该尽量提高代码向量化程度,避免循环
C、避免使用i,j作为循环变量

  3.while循环结构

while expression
   (commands)
end

A、expression的值为逻辑真(非0),则执行循环体,直到表达式值为假,结束循环。
B、循环次数不确定

  4.使用while循环的注意事项
A、一般情况下,expression表达式都是标量
B、MATLAB允许它为数组,此时只有数组元素都为真时,循环体才被执行
C、如果表达式为空数组,被认为是假

  5.While循环与for循环的区别
while循环体被执行的次数是不确定的(由expression的值决定),而for结构中循环体的执行次数是确定的(由for后的数组的列数决定)

  6.if-else-end分支结构

if expr1 %expr为条件表达式,该表达式结果为“标量逻辑1或0”
   (commands1) %expr允许为空数组,此时认为条件为假
elseif expr2 %expr只有当逻辑数组全为1时,该分支才被执行
   (commands2)
………
else
   (commandsk)
end

  7.switch-case结构

switch expr %expr为表达式
  case value_1 %value_1为给定值(数值,字符串标量,胞元数组)
     (commands1) %expr等于value_1时,执行组命令1,然后跳过该结构
……
   case value_k
     (commandsk) %ex等于testk时,执行组命令k,然后跳过该结构
   otherwise %以上情况“并”的“补”,可无
     (commands) %若所有case都补发生,则执行该组命令
end

  8.常见指令

指令 说明
break指令 break指令,或导致包含该指令的while、for 循环终止,或在if - end, switch - case, try – catch中导致中断。
continue指令 跳过位于它之后的循环体中其他指令,而执行循环的下一个迭代…
pause和pause(n) A、第一种格式使程序暂停执行,等待用户按任意键继续;B、第二种格式使程序暂停n秒后,再继续执行。
return 结束return指令所在函数的执行,而把控制转至主调函数或者指令窗。否则,只有待整个被调函数执行完后,才会转出。

  9.M文件的一般结构

结构 说明
函数声明行(Function declaration line) 位于函数文件的首行,以关键字function开始,函数名及输入输出量都由次行定义。
H1行(The first help text line) 紧随函数声明行后的第一注释行。
在线帮助文本区(Help text) H1行及其后的连续注释行。通常包括:函数输入输出量的含义,调用格式说明
编写和修改记录 与在线帮助文本区相隔一个空行的注释行。标志编写、修改该文件的作者、日期、版本记录。用于软件档案管理
函数体(Function body) 用MATLAB指令实现函数功能。只有函数声明和函数体是函数文件必不可少的部分

三、仿真结果

1.分别用for和while语句编写计算K=1+2+22+…+263的程序。另编写一种不用循环的计算程序。
答:for语句:

>>a(1)=1;a(2)=3;
for ii=2:63
    a(ii+1)=2^(ii)+a(ii);
end;a(ii+1)

while语句:

>> a(1)=1;a(2)=3;ii=2;
while ii<=63
    a(ii+1)=2^(ii)+a(ii);
    ii=ii+1;
end;a(ii)

不用循环的计算程序:

>>x=0:63;
y=2.^(x);
sum(y)

2.计算f(x)中x从0到15的累加求和,f(x)=0,x<=5;(x-3)/4,5<x&x<=10;2x,x>10
答:

>> x=6:10;
y=(x-3)/4;
c1=sum(y);
a=11:15;
b=2*a;
c2=sum(b);
c=c1+c2
c =
  136.2500

3.有一群鸡和兔子,加在一起头的数量是36,脚的数量是100,编程序解答鸡和兔子数量各是多少?
答:设鸡有x只,兔子有y只。由已知条件,可得方程组x+y=36和2x+4y=100。令A=[1,1;2,4],B=[36;100],编程结果如下:

>> A=[1,1;2,4];
B=[36;100];
X=A\B
X =
    22
    14

4.产生20个两位随机整数,输出其中小于平均值的奇数。
答:

>> a=fix(rand(2,10)*100)
b=mean(sum(a))
h=1;
for i=1:20
    if (a(i)<b)&&( rem((a(i)+1),2)==0 )
        c(h)=a(i);
        h=h+1;
    end
end,c
a =
    78    24     9    94    57    23    82     4    64    64
    38    40    13    95     5    35     1    16    73    45
b =
    86
c =
     9    13    57     5    23    35     1    73    45    11

四、实践中遇到的问题及解决方法

  1.问题:开始我只会用MATLAB产生随机数,不会产生20个两位随机整数
  解决办法:思路:先产生20个随机数,因为产生的随机数是与小数形式产生的,乘于100后就是带有两个小数的两位数,在求整,就达到要求了,具体程序可以写成:a=fix(rand(1,20)*100),其中fix表示取整数。
  2. 问题:不会求平均值。例如求一个4X5数组A中所以元素的平均值
解决办法:可以使用mean函数,但需要注意它的用法。用法一:mean(A),默认是先求得每一列的的和,然后对每一个列求平均值。用法二:mean(sum(A)),此时所输出的就是整个数组的平均值,需要加以注意
  3.问题:matlab里,不会用if语句判断奇数偶数?
  解决办法:对x判断奇数偶数,可以采用以下程序:a = mod(x,2);或a= rem(x,2)。MATLAB结果显示:如果a=1,说明x为奇数;如果a=0,说明x为偶数。
  4. 问题:建立函数文件命名时没有与函数指令的名称一致,导致函数不能调用。
  解决办法:函数文件的名称必须与函数指令的名称一致,否则函数不能调用

相关推荐

  1. MATLAB6M文件控制

    2024-07-19 17:40:04       19 阅读
  2. Nginx增加m3u8视频文件功能模块 推

    2024-07-19 17:40:04       29 阅读
  3. MATLAB .m文件的命名规则

    2024-07-19 17:40:04       23 阅读
  4. C++ 文件

    2024-07-19 17:40:04       51 阅读
  5. 【笔记】Helm-5 Chart模板指南-6 控制

    2024-07-19 17:40:04       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 17:40:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 17:40:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 17:40:04       58 阅读
  4. Python语言-面向对象

    2024-07-19 17:40:04       69 阅读

热门阅读

  1. early-stopping pytorch refs

    2024-07-19 17:40:04       19 阅读
  2. C++案例三:猜数字游戏

    2024-07-19 17:40:04       17 阅读
  3. 构建高可用应用的设计模式与实践

    2024-07-19 17:40:04       18 阅读
  4. MySQL简介

    2024-07-19 17:40:04       13 阅读
  5. Flutter 插件之 package_info_plus

    2024-07-19 17:40:04       19 阅读
  6. 《吴哥窟》歌词解析

    2024-07-19 17:40:04       18 阅读