MATLAB基础:5脚本与函数

news2024/9/20 7:42:17

脚本与函数

MATLAB命令的两种执行方式:

  • 交互式命令执行方式
  • 程序执行

要充分利用MATLAB数据结构的特点(矩阵运算、矢量化编程),充分利用MATLAB自带的函数

M文件:

  • 是一个文本文件,拓展名为.m
  • 可以用任何编辑程序来建立和编辑,默认matlab
  • M文件就是将处理问题的各种命令融合到一个文件中

启动MATLAB编辑器的三种方法:

  1. “主页”选项中的新建脚本/双击已有文件/打开命令按钮
  2. 命令行输入edit(既可以新建,也可以打开已有文件)
  3. 命令历史窗口,选中一些命令(按住ctrl可以同时选择多个),从右键快捷菜单中选择“创建脚本”命令,并在编辑区加入所选命令

M文件分类:

  1. 函数文件
  2. 脚本文件
区别函数文件脚本文件
输入参数没有
输出参数不返回返回
变量操作文件所有命令执行结果完全返回到工作空间执行完毕局部变量被清除
运行可以直接运行以函数调方式调用

举例:
建立一个M文件实现a和b的值的互换,2种方式
脚本文件:

a=input('请输入a的值:');
b=input('请输入b的值:');
c=a;
a=b;
b=c;
disp(['a=',num2str(a),'b=',num2str(b)]);

重点:input()函数和disp()函数


函数文件:
function [a,b]=swap(a,b)
c=a;
a=b;
b=c;
return;
end

重点:function和return

  1. 函数文件必须以function开头,以end结尾
  2. 函数文件()填输入参数,[]是输出参数
  3. 调用函数:[a,b]=swap(a,b)返回a和b的值
注释
  1. 单行注释:%
  2. 多行注释:%{ }%
函数文件的可调性
  • 调用函数时,MATLAB用两个永久变量nargin和nargout记录函数的输入参数和输出参数个数
  • 只要在函数文件包含这两个变量,就可以知道函数被调用时,输入参数和输出参数个数
    例子:
function fout=charray(a,b,c)
if nargin==1
fout=a;
elseif nargin==2
fout=[a,b];
elseif nargin==3
fout=[a,b,c];
end
return;
全局变量和局部变量
  • 函数文件中的变量是局部的,即在一个函数文件中定义的变量只能在该函数文件中使用,不能在别的函数使用
  • 如果要在若干个函数之间共享变量,可以将变量定义为全局变量
  • 全局变量用global命令定义,如:global a b
    例子:
    先建立函数文件wadd.m
    该函数将输入的参数加权相加:
function f=wadd(a,b)
global m n
f=m*a+n*b;
return;
end

命令行输入:

global m n
m=2;
n=3;
wadd(1,2)

函数的递归调用:

函数可以调用自己、调用他人
利用函数的递归,求n的阶乘:

function f=factorial(n)
if n<=0 
f=1;
else
f=n*factorial(n-1);
end

特殊形式函数:

1. 子函数
  • 可以在M文件同时定义多个函数
  • M文件出现的第一个函数称为主函数,其他函数称为子函数
  • 子函数只能由同一M文件调用,不能被其他文件调用
  • 函数名与主函数相同
    例如:
function d=func(a,b,c)
d=subfunc(a,b)+c;
end
function f=subfunc(a,b)
f=a*b;
end
2. 内联函数
  • 以字符串形式存在的函数表达式可以通过inline函数转换为内联函数
  • 例如:a=“x+y”,可以通过inline(a)转换为内联函数f(x,y)=x+y
a='(x+y)^2';
b=inline(a);
b(2,3)
3. 匿名函数
  • 匿名函数基本格式:函数名=@(x,y)x+y
  • 输入参数用逗号隔开
程序优化和调试

程序调试方法:

  • 程序错误有两类:语法错误和运行错误
  • 语法错误包括词法或文法错误,例如函数名拼写错、表达式写错等
  • 程序运行错误是指运行错误,例如变量未定义、函数调用错误等,称为程序逻辑错误
  • 利用调试函数
  • 利用调试工具

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

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

相关文章

4G模组SIM双卡切换是徒增成本,还是未雨绸缪?

初学开发的小伙伴提出疑问&#xff1a;手机双卡可以理解&#xff0c;物联网设备有必要双卡吗&#xff0c;会不会太浪费&#xff1f; 但在实际应用中&#xff0c;双卡是必需的。 在使用4G模组双卡功能的场景下&#xff0c;切换卡槽更是一个关键环节——关乎设备在不同网络环境…

iOS界面布局:屏幕尺寸与安全区域全面指南

引言 随着iPhone和iPad的更新迭代&#xff0c;iOS设备的屏幕尺寸和设计也在不断变化。无论是iPhone X系列的刘海屏&#xff0c;还是最新的iPhone 14&#xff0c;开发者都需要面对适配不同设备布局的问题。在项目开发中&#xff0c;导航栏、状态栏、TabBar的高度以及安全区域的…

rabbitmq整合skywalking并编写自定义插件增强

rabbitmq整合skywalking 首先先下载准备好skywalking 的服务端和ui控制台&#xff0c;java-agent https://skywalking.apache.org/downloads/ 整合skywalking 我的流程是在生产者和消费者服务中去引入一个mq的sdk&#xff0c;具体SDK的内容可以查看这篇文章 在sdk的pom文件…

合理使用布局

一、ArkUI框架执行流程 在使用ArkUI开发中&#xff0c;我们通过布局组件和基础组件进行界面描述&#xff0c;这些描述会呈现出一个组件树的结构&#xff0c;基础组件在其中为叶子结点&#xff0c;布局组件则是中间节点&#xff0c;可以把这棵树称之为应用组件树。当用户执行交互…

VMware ESXi 8.0U3b macOS Unlocker OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)

VMware ESXi 8.0U3b macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版) 发布 ESXi 8.0U3 集成驱动版&#xff0c;在个人电脑上运行企业级工作负载 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-esxi-8-u3-sysin/&#xff0c;查看最新版…

用多种编程语言绘制爱心图案的艺术

目录 一、Python&#xff1a;用 Matplotlib 绘制静态爱心 代码示例&#xff1a; 效果展示&#xff1a; 二、JavaScript&#xff1a;用 HTML5 Canvas 绘制跃动的爱心 代码示例&#xff1a; 效果展示&#xff1a; 三、Java&#xff1a;用 Swing 绘制静态爱心 代码示例&…

【新手上路】衡石分析平台系统管理手册-安全管理

安全策略​ 安全策略是针对系统中所有用户进行的安全控制&#xff0c;只有系统管理员可以设置。 打开设置->安全策略页面。 登录安全策略​ 启用复杂密码​ 启用之后&#xff0c;用户修改密码时&#xff0c;必须输入符合要求的复杂密码。 密码90天失效​ 密码的有效期…

江协科技STM32学习- P14 示例程序(定时器定时中断和定时器外部时钟)

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

【嵌入式】二进制参数配置生效策略引发数据类型校验失败问题

背景 嵌入式产品发布后&#xff0c;可以通过升级二进制小文件进行产品参数配置。因为预留配置问题&#xff0c;当二进制转化为内部结构体架构化数据时&#xff0c;会判断如果值为255则表示无需配置生效。但是因为笔误&#xff0c;代码不严谨&#xff0c;调试的时候发现数值校验…

用代码生成代码之Roslyn-C#代码分析和生成工具

Roslyn 是什么&#xff1f; Roslyn是微软公司开源的.NET编译器&#xff0c;它提供了丰富的代码分析API&#xff0c;并支持C#和Visual Basic代码的编译。 Roslyn 的主要功能 编译器扩展&#xff1a; 使用Roslyn可以创建自定义的编译器扩展&#xff0c;如语法分析器、重构器、…

50页PPT麦肯锡精益运营转型五步法

读者朋友大家好&#xff0c;最近有会员朋友咨询晓雯&#xff0c;需要《 50页PPT麦肯锡精益运营转型五步法》资料&#xff0c;欢迎大家下载学习。 知识星球已上传的资料链接&#xff1a; 企业架构 企业架构 (EA) 设计咨询项目-企业架构治理(EAM)现状诊断 105页PPTHW企业架构设…

JavaSE--集合总览02:单列集合Collection的体系之一:List

Collection体系的特点 分为 list 和set集合&#xff0c;这篇文章主要讲述List&#xff0c;下篇讲述Set。 简单认识单列集合collection集合的特点 : list集合的特点&#xff1a; 有序 可重复 有索引 set集合的特点&#xff1a;无序 不重复 无索引 其中LinkedHashSet有序 TreeS…

基于springboot的智慧社区微信小程序

文未可获取一份本项目的java源码和数据库参考。 本课题研究目标 本文主要对小区生活服务平台的功能和非功能需求进行了分析&#xff0c;系统除了提供物业保修、小区资讯、投诉留言、常用电话等基础功能外&#xff0c;为了满足用户的多样化需求&#xff0c;还提供邻里圈子和有…

仪表放大器AD620

AD623 是一款低功耗、高精度的仪表放大器&#xff0c;而不是轨到轨运算放大器。它的输入电压范围并不覆盖整个电源电压&#xff08;轨到轨&#xff09;&#xff0c;但在单电源供电下可以处理接近地电位的输入信号。 AD620 和 AD623 都是仪表放大器&#xff0c;但它们在一些关键…

【OceanBase诊断调优】—— 断连接问题根因分析

背景 当前用户请求执行的链路主要如下&#xff0c;请求从客户端发送到ObProxy&#xff0c;ObProxy将请求路由到对应的ObServer节点&#xff0c;ObServer处理请求发送回包给ObProxy&#xff0c;ObProxy回给客户端。目前整条链路上都可能发生断连接的场景&#xff0c;比如请求处…

Java 每日一刊(第12期):面向对象

“任何复杂的程序&#xff0c;都可以通过分解成若干个简单的问题来解决。” 前言 这里是分享 Java 相关内容的专刊&#xff0c;每日一更。 本期将为大家带来以下内容&#xff1a; 类对象类与对象的关系Java 中的三种变量类型OOP 的三大特性 类 类 是对现实世界中某类事物…

修改Docker默认存储路径,解决系统盘占用90%+问题(修改docker root dir)

随着Docker技术的广泛应用&#xff0c;它极大地简化了复杂项目的部署与维护流程&#xff0c;仅凭单一镜像即可轻松运行。然而&#xff0c;随着数据量不断增长&#xff0c;Docker的默认数据存储方式可能逐渐成为挑战&#xff0c;尤其是当默认安装于根目录&#xff08;“/”&…

计算机的错误计算(九十八)

摘要 探讨 的计算精度问题。 由计算机的错误计算&#xff08;九十六&#xff09;知&#xff0c;IEEE 754-2019标准中含有 运算。 另外&#xff0c;似乎没有语言直接编程实现内置了该运算。 例1. 已知 x-0.9999999999321 . 计算 不妨用Java编程计算&#xff1a; import…

微服务注册中⼼1

1. 微服务的注册中⼼ 注册中⼼可以说是微服务架构中的”通讯录“ &#xff0c;它记录了服务和服务地址的映射关系。在分布式架构中&#xff0c; 服务会注册到这⾥&#xff0c;当服务需要调⽤其它服务时&#xff0c;就这⾥找到服务的地址&#xff0c;进⾏调⽤。 1.1 注册中⼼的…

前端面试题——token安全问题处理与大数据列表展示

1.长时间保存token问题 长时间保存Token涉及多个方面的问题&#xff0c;包括安全性、性能、以及Token的管理策略等。以下是对长时间保存Token问题的详细分析&#xff1a; 一、安全性问题 Token泄露风险&#xff1a; Token是用户身份验证的凭证&#xff0c;如果长时间保存且未…