MATLAB入门-程序控制结构

news2024/10/7 5:45:36

MATLAB入门-程序控制结构

注:本篇文章为课程学习笔记,课程链接为:头歌

if、elseif、else

相比于C语言,这里多了一个end

在这里插入图片描述

switch、case、otherwise

相比于C语言,这里也多了一个end,默认字符也不一样。
在这里插入图片描述

for循环

for循环的基本用法:
在这里插入图片描述
例如:
在这里插入图片描述

while循环

while循环的基本用法为:
在这里插入图片描述
例如:
在这里插入图片描述

循环的嵌套

需要注意的是:有几个循环就有几个end
在这里插入图片描述

自定义函数

带参数的函数

带参数的函数具体的使用方法为:function[y1,……yn]=myfun(x1,……,xm)
其中y1,……,yn表示函数运行后的输出值,x1,……,xm表示调用函数时的输入值,function是必须有的标志。
可以理解:这里的function就是函数头

返回一个值的函数

例如:求平均值的函数,将文件保存为average.m,并输入以下代码:
在这里插入图片描述
这是一个返回一个值的函数,在命令窗口输入以下代码来测试:
在这里插入图片描述
其结果为:
在这里插入图片描述

返回多个值的函数

对于返回多个值的函数,可以写成如下形式,创建一个stat.m文件,并输入:

function[m,s]=stat(x)
n=length(x);
m=sum(x)/n;
s=sqrt(sum(x-m).^2/n));
end

然后在命令窗口中输入以下代码来测试:

values=[12.7, 45.4, 98.9, 26.6, 53.1];
[ave,stdev]=stat(values)

运行结果为:
在这里插入图片描述

一个文件里定义多个函数

例如:把上面的两个函数都存储在stat2.m文件中。输入以下代码:

function [m,s] = stat2(x)
n = length(x);
m = avg(x,n);
s = sqrt(sum((x-m).^2/n));
end
function m = avg(x,n)
m = sum(x)/n;
end

但是,**从命令窗口中只能调用第一个函数stat2,而第二个函数avg只能在stat2.m中被其他函数调用,不能在命令行中被调用。**所以在命令窗口中只能输入以下代码:

values = [12.7, 45.4, 98.9, 26.6, 53.1];
[ave,stdev] = stat2(values)

这里涉及一个开发规范:

  1. 在matlab中,创建一个函数文件是,要求文件名和函数名一致(方便系统查找);
  2. 在一个函数文件(.m)中,可以有多个函数,但是只有第一个函数(与.m文件的文件名一致)可以被工程目录中的其他程序调用,称之为全局函数,而后面的其他函数都只能被当前函数文件中的其他程序调用,不能被文件以外的程序调用,称之为局部函数

为了便于理解,这里把上面的函数整合一下,形成一个新的函数文件test.m:
注:第一个函数名需要与文件名一致。

function test
values = [12.7, 45.4, 98.9, 26.6, 53.1];
[ave,stdev] = stat2(values)
z=1:99;
avg(z,99)
end

function [m,s]=stat2(x)
n=length(x);
m=avg(x,n);
s=sqrt(sum(x-m).^2/n));
end

function m=avg(x,n)
m=sum(x)/n;
end

这样一来,就可以直接运行test.m文件。

课后小练

把之前的两个关卡中的程序封装成两个函数answer_me和fibonacci,要求输入字符串answer_me的时候运行第一个关卡对应的函数answer_me,输入字符串fibonacci时运行第二个关卡对应的函数fibonacci。让我们一起开始新的内容吧。

%%%%%	function_test.m   %%%%%

%%%%%构造主函数function_test
function function_test(string,datain)   %string是待执行函数名,datain是函数的输入参数
    
    if strcmp(string,'answer_me')   %如果是answer_me函数
        answer_me(datain);    %执行函数,在函数内输出回答
    end
    
    if strcmp(string,'fibonacci')   %如果是fibonacci函数
        fab=fibonacci(datain); %执行函数,返回对应于序号num的斐波那契数
        disp(num2str(fab)); %输出对应于序号num的斐波那契数
    end
    
end

%%%%%%%%%% begin %%%%%%%%%
%%%%% 1. 构造函数answer_me(question)
function answer_me(question)
    switch question
        case '田鸡炖土鸡'
            answer='附近有妖气';
        case '熟读唐诗三百首'
            answer='不会吟诗我不走';
        case '天空飘来5个字'
            answer='关我什么事';
        case 'Who are you'
            answer='社会主义接班人';
        otherwise
            answer='我不认识你';
    end
    disp(answer);
end

%%%%% 2. 构造函数fab=fibonacci(num)
function fab=fibonacci(num)
    f=zeros(1,num);
    for n=1:1:num
        if(n==1||n==2)
            f(n)=1;
        else
            f(n)=f(n-1)+f(n-2);
        end
    end
    fab=f(num);
end
%%%%%%%%% end %%%%%%%%%%%%

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

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

相关文章

智慧公厕建设,要以技术为支撑、体验为目的、业务为驱动

#智慧公厕[话题]# #智慧公厕系统[话题]# #智慧公厕厂家[话题]# #智慧公厕驿站[话题]# 在数字化城市与智慧城市的大力推进下,作为社会重要的生活设施,智慧化的公共厕所的建设变得越来越重要。作为城市的基础部件之一,公厕的智慧化建设需要进行…

实例 | Python 实现 RSA 加解密

大家好,欢迎来到编程教室 ! 前阵子看到一篇英文文章[1],展示了如何用 Python 来实现 RSA 算法。不太熟悉 RSA 的朋友可以看一下一文搞懂 RSA 算法,里面对什么是 RSA,RSA 的数学原理进行了说明,并举了一个简…

平板用的触控笔什么牌子好?开学便宜电容笔推荐

在新学期即将来临之际,你觉得什么样的电容笔才是最好的选择呢?我是一个数码爱好者,有几年以上的使用经验,也知道一些关于电容笔的事情。我觉得,这款苹果原装的电容笔,与普通的电容笔最大的不同之处&#xf…

手把手教你,如何先梳理业务逻辑再写代码

1.业务逻辑与代码 代码是需求逻辑的一种展现形式 需求文档是业务逻辑的一种展现形式,而代码不过是业务逻辑的另一种表现形式;如果逻辑本身有问题,那么它的各种展示形式自然也是错的,所以写代码前应该先思考清楚业务逻辑。 Revi…

【校招VIP】专业课考点之网络存储

考点介绍: cookie、session和localstorage 是目前常用的存储机制,不管是大厂还是中小公司,都会对这个问题有比较高的考察频度,而且有一定的深度和对比分析 专业课考点之网络存储-相关题目及解析内容可点击文章末尾链接查看&#…

为什么C ++在嵌入式系统设计中是C的可行替代品

你是一名。你知道C是适合该工作的语言,尽管有时维护周期可以重复很长时间。有时你会感到that琐,就像在编码自动机一样,反复在结构上创建基本迭代,这些结构与上周或上个月的结构非常相似。 你已经听说过C 作为一种功能强大的语言的…

【AI绘画接口】Midjourney是什么?Midjourney有官方接口吗?

什么是 Midjourney? 随着AI技术的发展,AI聊天、AI绘画都从小众尝鲜逐渐应用到了生产当中。现在市面上的绘画AI并不少,而 Midjourney 是其中最好用的之一。我们只需要输入一些提示词,Midjourney 就能根据输入的提示词自动生成符合…

怎么找回回收站删除的文件?轻松恢复数据,就看这3个方法!

“求助求助!回收站删除的文件还有找回来的机会吗?一不小心就把回收站中的文件删除了,现在不知道该如何是好了,希望热心的网友们可以帮帮我!” 大家都知道,电脑有一个功能叫回收站,系统会将我们删…

代码随想录 -- day49 -- 121. 买卖股票的最佳时机 、122.买卖股票的最佳时机II

121. 买卖股票的最佳时机 动态规划: dp[i][0] 表示第i天持有股票所得最多现金,dp[i][0] 表示第i天持有股票所得最多现金。 第i-1天就持有股票,那么就保持现状,所得现金就是昨天持有股票的所得现金 即:dp[i - 1][0]第…

echarts折线图每段显示不同的颜色

效果图 配置项: zqChartFour: {title: {text: "一天用电量分布",subtext: "纯属虚构",},tooltip: {trigger: "axis",axisPointer: {type: "cross",},},toolbox: {show: true,feature: {saveAsImage: {},},},xAxis: {type:…

Linux 中nc指令的使用总结

nc指令概述用法一:端口扫描用法二:命令行中发送和接收数据用法三:建立双方通信 nc指令概述 nc 是 Linux 系统中的 netcat 命令之简称,它是一个强大的网络工具,可以用于创建 TCP/UDP 套接字连接。常见的其用法模板可定…

目标检测中生成锚框函数详解

将设一张图片,宽和高为2,2 X torch.rand(size(1,3,2,2)) Y generate_anchors(X,sizes[0.75,0.5,0.25],ratios[1,2,0.5])锚框中心点的设置 # 为每个像素可以生成 nm-1个锚框,整个图像生成 wh(nm-1) def generate_anchors(data,sizes,ratios): # 书上的…

重磅预告 |第十二届中国智能产业高峰论坛9月16日在昌开幕,集团董事长李火亮任专题联席主席,出席本次活动

在这个数字化、智能化社会经济高速迭代的时代,每一次技术的进步都预示着一个全新的未来。在此背景下第十二届中国智能产业高峰论坛即将拉开帷幕。9月16日-9月18日高峰论坛在中国南昌举行,拓世科技集团董事长李火亮将亲身出席本次活动,与众多领…

解决:AD装配输出拾放文件出现闪退问题

PCB在装配输出过程中,需要导出拾放文件,但是今天每次执行这个过程,AD软件就会直接闪退。 重启AD把项目管理器中没有关掉的一系列乱七八糟文件手动关闭关闭AD软件再次重启AD,打开项目重新导出。

YOLOv5 加入SE注意力机制

步骤1:在common.py中添加SE模块 class SE(nn.Module): def __init__(self, c1, c2, r16): super(SE, self).__init__() self.avgpool nn.AdaptiveAvgPool2d(1) self.l1 nn.Linear(c1, c1 // r, biasFalse) self.relu nn.ReL…

付费咨询擅长领域

曾获中国电机工程学报优秀审稿专家,控制与决策审稿专家,系统工程与电子技术审稿专家,计算机科学审稿专家,Mechanical System and Signal Processing审稿专家。 擅长现代信号处理(小波分析类,模态分解类&…

SAP 自定义权限对象开发与使用

如何自定义一个权限对象,然后分配到对应的权限角色中,进行用户权限的控制? 具体实现步骤如下: 1. 创建数据元素 进入事务码: SE11 2. 创建权限字段 进入事务码SU20 3. 创建权限对象类以及权限对象 事务码&#xf…

redis集群的维护(redis-cli --cluster 命令用法)

目录 前言 1、 --cluster create 创建集群 2、--cluster check 检查集群 3、--cluster info 查看集群 4、--cluster fix 修复集群 5、--cluster rehard 迁移槽位 6、 --cluster rebalance 平衡集群 7、 --cluster add-node 集群扩容 8、--cluster del-node …

实现读写分离(MySQL主从数据库)

读写别离(Read/Write Splitting)。 1.原理: 让主数据库(master)处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库(slave)处理SELECT查询操作。 …

论文复制ChatGPT按钮被发表,撤回后再曝多个类似案例;Midjourney 生成大师级的人像

🦉 AI新闻 🚀 论文复制ChatGPT按钮被发表,撤回后再曝多个类似案例 摘要:一篇物理论文复制了ChatGPT按钮内容,经过两个月同行评审并在杂志上发表。这一现象被知名打假人发现后,发表商决定撤回该论文。此外…