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:63a(ii+1)=2^(ii)+a(ii);
end;a(ii+1)

while语句:

>> a(1)=1;a(2)=3;ii=2;
while ii<=63a(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 =2214

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

>> a=fix(rand(2,10)*100)
b=mean(sum(a))
h=1;
for i=1:20if (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    6438    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. 问题:建立函数文件命名时没有与函数指令的名称一致,导致函数不能调用。
  解决办法:函数文件的名称必须与函数指令的名称一致,否则函数不能调用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/47801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

银发经济发展需要什么支持

随着社会老龄化的加剧&#xff0c;“银发经济”应运而生&#xff0c;成为社会发展的新动向。银发经济指的是针对老年人群体的经济活动&#xff0c;包括健康护理、休闲旅游、教育文化等多方面内容。这一现象不仅体现了社会对老年群体的关注和尊重&#xff0c;同时也为经济发展提…

python selenium4 EdgeDriver动态页面爬取

截止至2024.7.16 chrome浏览器最新版本为126.0.6478.127 但对应的chromeDriver版本都低于此版本&#xff0c;因此&#xff0c;转用Edge浏览器 说明&#xff1a;仅记录自己使用过程中用到的一些代码和感受&#xff0c;看具体情况不定期更新。 selenium官方文档 1、安装selen…

qt 6.7 版本 ,QStackedLayout布局中添两个QWidget,每个QWidget都有一个按钮,点击后分别显示另一个布局

1.代码 在Qt 6.7中&#xff0c;如果你想要将QStackedLayout布局中包含两个QWidget&#xff0c;并且每个QWidget都有一个按钮&#xff0c;点击按钮后显示另一个布局&#xff0c;同时希望将头文件&#xff08;.h&#xff09;和源文件&#xff08;.cpp&#xff09;分开&#xff0…

Python基础:register buffer

模型保存下来的参数有两种&#xff1a;需要更新的 Parameter &#xff0c;与是不需要更新的 buffer 。 在模型中&#xff0c;利用backward反向传播&#xff0c;可以通讨requires_grad来得到 buffer 和 parameter 的梯度信息&#xff0c;但是利用 optimizer 进行更新的是 parame…

Apache httpd-vhosts.conf 配置详解(附Demo)

目录 前言1. 基本配置2. http和https3. 重定向和代理配置4. 实战前言 Nginx的相关配置推荐阅读:Nginx将https重定向为http进行访问的配置(附Demo) 1. 基本配置 httpd-vhosts.conf 是 Apache HTTP Server 配置虚拟主机(Virtual Hosts)的文件 虚拟主机允许在一台服务器上…

HarmonyOS NEXT零基础入门到实战-第一部分

构建节页面思路&#xff1a; 1、排版 (分析布局) 2、内容&#xff08;基础组件&#xff09; 3、美化&#xff08;属性方法&#xff09; 设计资源-svg图标 界面中展示图标 ->可以使用svg图标&#xff08;任意放大缩小不失真&#xff0c;可以改颜色&#xff09; 使用方式&a…

重磅活动推荐:2024 CLK 大会启动中,承办单位开放报名

中国 Linux 内核开发者大会&#xff08;简称“CLK 大会”&#xff09;是中国 Linux 内核领域最具影响力的峰会之一&#xff0c;由清华大学、英特尔、富士通南大、IBM、阿里云、华为、腾讯等企业支持主办。大会秉承“自由、协作、创新”理念&#xff0c;以推动和普及开源技术为使…

java中Hashcode的作用【详解版】

一 HashCode作用 1.1 HashCode作用 hashCode是object类的一个方法&#xff0c;用于哈希表结构&#xff0c;主要是用来获取哈希值&#xff0c;用于确定对象在哈希表中的位置&#xff0c;如果两个对象的hashcode相同&#xff0c;那么他们可能被放在哈希表同一个位置(这取决于哈…

【每天值得看】文章获得《每天值得看》人工智能板块推荐第三名!为自己点个赞!!!

[2024-07-19]&#xff5c;CSDN每天值得看&#xff5c;人工智能 ① 【机器学习】Grid Search: 一种系统性的超参数优化方法&#xff08;鑫宝Code:[博客] [成就]&#xff09; [质量分&#xff1a;97&#xff1b;难度等级&#xff1a;未知&#xff1b;新鲜技术&#xff1a;99] 摘…

第2部分:物联网模式在行动

第2部分&#xff1a;物联网模式在行动 上一部分中详细介绍的模式可以混合和匹配&#xff0c;以实现物联网用例。本部分提供了这些模式的有效性证明&#xff0c;以满足不同领域的独特需求并实施用例&#xff0c;包括消费品和家庭自动化、零售、运输、制造和农业。 本部分包括以…

辅助类BigDecima/BigInteger

** 大数据的运算** 编号1方法解释1add2subtract-3multiply*4divide/

如何发一篇顶会论文? 涉及3D高斯,slam,自动驾驶,三维点云等等

SLAM&3DGS 1&#xff09;SLAM/3DGS/三维点云/医疗图像/扩散模型/结构光/Transformer/CNN/Mamba/位姿估计 顶会论文指导 2&#xff09;基于环境信息的定位&#xff0c;重建与场景理解 3&#xff09;轻量级高保真Gaussian Splatting 4&#xff09;基于大模型与GS的 6D pose e…

无重复字符的最长子串(leetcode)

题目来源&#xff1a;https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/ 题意 如题&#xff0c;给定一个字符串s&#xff0c;请你找出其中不含有重复字符的最长子串的长度 思路 考点&#xff1a;哈希表滑动窗口 如果我们用两重循…

AutoMQ 生态集成 Redpanda Console

通过 Kafka Web UI 更加便利地管理 Kafka/AutoMQ 集群 随着大数据技术的飞速发展&#xff0c;Kafka 作为一种高吞吐量、低延迟的分布式消息系统&#xff0c;已经成为企业实时数据处理的核心组件。然而&#xff0c;Kafka 集群的管理和监控却并非易事。传统的命令行工具和脚本虽…

C++从入门到起飞之——this指针 全方位剖析!

个人主页&#xff1a;秋风起&#xff0c;再归来~ C从入门到起飞 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01; 目录 1、this指针 2、C和C语⾔实现Stack对⽐ C实现Stack代码 C实现Stack代…

华为OD机考题(基础API)

基础API 字典排序 List<String> listnew ArrayList(); //add list member Arrays.sort(list);List<Map<String,Integer>> listnew ArrayList(); //add list member Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {Over…

c# listview控件调整标题显示顺序

右键点击listview,选择编辑列 修改DisplayIndex listview在成员位置点击上下箭头移动后&#xff0c;实际显示不会改变&#xff0c;因为DisplayIndex没有改变

【Git】(基础篇四)—— GitHub使用

GitHub使用 经过上一篇的文章&#xff0c;相信大家已经对git的基本操作熟悉了&#xff0c;但哪些使用git的方法只是在本地仓库进行&#xff0c;本文介绍如何使用git和远程仓库进行连接使用。 Github和Gitee 主要用到的两个远程仓库在线平台是github和gitee GitHub GitHub …

STM32第十九课:FreeRTOS移植和使用

目录 需求一、FreeRtos概要二、移植FreeRtos1.复制源码2.内存空间分配和内核相关接口3.FreeRTOSConfig.h4.在工程中添加.c.h 三、任务块操作1.创建任务2.任务挂起&#xff0c;恢复&#xff0c;删除 四、需求实现代码 需求 1.将FreeRtos&#xff08;嵌入式实时操作系统&#xf…

白骑士的C++教学高级篇 3.2 多线程与并发

系列目录 上一篇&#xff1a;白骑士的C教学高级篇 3.1 文件操作 随着计算机硬件的发展&#xff0c;现代计算机通常配备了多核处理器&#xff0c;为并发编程提供了硬件基础。C11引入了一组强大的多线程库&#xff0c;使得开发多线程应用程序变得更加容易和安全。本篇内容将详细…