技术标签: matlab
Matlab函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Matlab提供了许多内建函数,比如disp()。但你也可以自己创建函数,这被叫做用户自定义函数
matlab
disp(‘hello world’)
hello world
总的来说,自定义函数分为两步:即定义函数和调用函数。
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 function关键词开头,后接输出变量和函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以end结束。
函数需要定义在脚本文件(*.m)中运行,不可以在命令窗口中临时创建。
语法
Matlab定义函数需要使用function关键字,一般格式如下:
matlab
function 输出变量 = 函数名(输入变量)
函数体
end
这里的输入变量和输出变量都可以根据实际情况缺省。
实例
创建一个函数,用来输出“hello world!” ,步骤如下:
新建一个脚本,命名为eg1.m
matlab
test();
function test()
disp(‘hello world!’)
end
点击顶部菜单的运行按钮,即可在命令窗口输出:
matlab
eg1
hello world!
更复杂一点的应用,我们让函数带上输入变量和输出变量:
matlab
s = calc_area(4,5);
function s = calc_area(w,h)
s = w*h;
disp([‘area=’,num2str(s)]);
end
以上实例输出:
matlab
eg2
area=20
输入变量缺省
有时候,输入变量的个数不确定,但是又想将不同个数情况统一到一个函数里,即输入变量有缺省时,可以利用nargin来判断,然后给出对应的输出。例如:
matlab
out(1)
out(1,2)
out(1,2,3)
function out(a,b,c)
if nargin == 1
disp(a)
elseif nargin == 2
disp([a,b])
elseif nargin == 3
disp([a,b,c])
end
end
上面的实例将会得到:
matlab
eg5
1
1 2
1 2 3
可以看到,当输入不同输入变量个数时,会找到对应个数下的执行代码,返回相应的内容。
当然这种做法也存在弊端,当变量个数太多时,要写很多个判断;这种情况下可以尝试inputParser,这里我就不多解释了,有兴趣可以了解下。
函数调用
函数基本结构完成后,进行调用时,存在两种方法:
直接在函数所在脚本文件内调用(上面的例子就是这种情况);
函数定义与调用分开,各自存为一个脚本,运行调用脚本。
法一:脚本内调用函数
直接在函数脚本内调用
直接在函数脚本内调用
如上图所示,调用函数在前,定义函数在后,点运行即可得到输出。
法二:函数脚本独立,另外写代码调用
调用函数
调用函数
定义函数
定义函数
如上图所示,函数脚本和调用函数的脚本分开了,保存在同一路径下。
在第二种方法下,也可以在命令窗口直接调用所写的函数:
命令窗口调用函数
命令窗口调用函数
这种调用与上面本质上是一样的,都是首先找到以函数名命名的脚本文件,然后再执行函数内部代码块,返回结果。在这里必须注意函数脚本名字要与函数名一致。
事实上,为了让编程变得系统化,模块化,我们不建议你采用第一种方法去写代码,因为这样不利于分析和维护代码。
而采用后面一种方法时,我们可以定义很多个函数,然后在其他脚本里调用它们,这样形成了一种模块化的关系。我们在分析代码时,注意力可以集中到主程序上,思路将更加清晰。
输出值缺省调用
在matlab的函数中,可以选择性地获取所返回的变量列表值,下面给出实例:
matlab
default = out()
[a,,]= out()
[,b,] = out()
[,,c] = out()
function [a,b,c] = out()
a = 1;
b = 2;
c = 3;
end
上述实例输出结果:
matlab
eg4
default =
1
a =
1
b =
2
c =
3
可以看到,函数默认以返回的第一个变量为输出值;若想得到返回的某个值时,用变量接住,对于不需要的值,则需要用~占位,但不接收这个值,这样做的目的就是为了保证输出的序号能够匹配到。
编者按:微软正在做巨硬的东西,这听起来似乎不可思议。但这就是事实,而且正是因为软件不断增长的需求难以得到满足才让微软萌生了这个想法。这个想法曾经被认为是白日梦,但现在Project Catapult做出来的FPGA芯片已经部署到微软的Bing、Azure以及Office 365等服务上。未来几年微软的几百万台服务器都将部署这种专门加速计算的芯片。除了微软...
ESP8266(7)DNS/HTTP/SNTP/JSONDNSHTTPSNTPJSONDNSDomain Name System(域名系统),域名就是一串用点分隔的字符,是互联网上某台/某组计算机的名字,http://。。。。。就是域名使用域名的方式可以访问互联网上的服务器服务器就是计算机,IP地址可能会改变如果IP改变了,就需要重新录入地址而域名不会改变在网络连接初始化中引用...
Okgo是常用的网络请求方式,下面介绍Okgo的get。post请求以及下载网络文件首先导入Okgo,在build.gradle的dependencies里导入//okgo网络请求框架implementation 'com.lzy.net:okgo:3.0.4'implementation 'com.zhy:okhttputils:2.6.2'然后下载的代码:OkGo.get<File>(url) //url是下载的地址 .tag(this) ...
ResultSetHandler主要处理statement,cursor,callstatement三种类型的结果集,其接口定义如下:public interface ResultSetHandler { <E> List<E> handleResultSets(Statement stmt) throws SQLException; <E> Cursor<E> handleCursorResultSets(Statement stmt) t
无论是单位还是个人,有了工作计划,工作就有了明确的目标和具体的步骤,就可以协调大家的行动,增强工作的主动性,使工作有条不紊地进行。下面是小编整理的计算机教室新学期工作计划,欢迎大家参考!计算机教室新学期工作计划一:为了适应信息社会的发展需要,满足教育信息化的要求,根据国家教育部颁布的《中小学信息技术课程指导纲要(试行)》,开设信息技术教育课程,让学生了解一些简单的信息技术常识和基本的计算机操作能力...
Linux时间 Linux的时间分为 System Clock(系统时间)和 Real Time Clock(硬件时间,简称RTC)。 系统时间:指系统内核中的时间。 硬件时间:指主板上的时间。查看系统时间date查看硬件时间hwclock删除本地时间rm -rf /etc/localtime创建软连接ln -s /usr/share/zoneinfo/...
python 将文件夹内所有2D图像堆叠为3D图像并保存导入必要的库:from skimage import io创建一个空的3维数组:np.zeros(shape=(3,4,5), dtype='float64')用2维数组对3维数组的每一维赋值:im3d[i]=im2d代码如下:# -*- coding: utf-8 -*-&amp;quot;&amp;quot;&amp;quot;Created on Sat Sep 22 ...
需求查询某一天中每个小时的订单数量, 如果某个时间段没有数据, 就填充 0. 效果如下:建表语句-- 一张简化过的 xx 订单表CREATE TABLE `mod_work_order` ( `id` int(11) NOT NULL, `create_time` datetime NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;模拟2021年3月22日当天的数据INSERT INTO `m
一、为什么会有Hooks 介绍Hooks之前,首先要说一下React的组件创建方式,一种是类组件,一种是纯函数组件,并且React团队希望,组件不要变成复杂的容器,最好只是数据流的管道。开发者根据需要,组合管道即可。也就是说组件的最佳写法应该是函数,而不是类。但是我们知道,在以往开发中类组件和纯函数组件的区别是很大的,纯函数组件有着类组件不具备的多种特点:纯函数组件没有状态纯函数组件没有生命周期纯函数组件没有thi
学习过《软件工程》吧.软件工程可是每一个程序员"必修"的课程啊.如果你没有学习过, 建议你去看一看. 在这一章里面,我们一起来从软件工程的角度学习网络编程的思想.在我们写程序之前, 我们都应该从软件工程的角度规划好我们的软件,这样我们开发软件的效率才会高. 在网络程序里面,一般的来说都是许多客户机对应一个服务器.为了处理客户机的请求, 对服务端的程序就提出了特殊的要求.我们学习一下目前最常用的服务
封面–封面应该是所有想写学位论文模板的人最大的苦恼,也是直接劝退大部分人的主要原因这是学校的模板,下划线,对齐位置都够麻烦的了。真的是直接直接哭,而且装订线也不好做,这里直接放上装订线的代码,应该是可以解决问题的,如果需要细调自己可以尝试调调看装订线 {\tiny \newsavebox{\zdx} %装订线 \newcommand{\putzdx}{\marginpar{ \parbox{1cm}{\vspace{0.5cm} \ro
在我们之前的文章,反射的第一部分:发现和执行里,我们已经介绍了System.Reflection命名空间及其包含的类,开发人员使用这些类可以查看程序集的元数据,并且可以在运行时查找和发现类型,甚至可以调用发现的代码。在这篇文章中,我们将探讨反射的高级功能:Emit,它具有在运行时动态的产生代码的功效。回顾反射首先,让我们快速的回顾一下,什么是反射以及反射可以被用来做什么。从第一部分内容中,