1.4 函数用法的简单介绍

1.4.1什么是函数

似乎很多人一听到函数这个词就会想到数学中的某个概念,然后对于恐惧数学的同学就开始打退堂鼓。在matlab当中到处可以用到函数,它的出现可以让我们用很简单的语句来实现一些复杂的功能。

用一个很通俗的语言来解释,你可以将一个函数当做一个黑箱子,在这个黑箱子中装有各种“机关”,每个黑箱子都能实现一定的功能,我们只要按照这个箱子的规定,在箱子中放入一些它所需要的一些东西,这个箱子通过里面的机关对你放进去的东西进行加工,最终也可以吐出另外一些东西。

举个简单的例子来说,现在手头有一组数据,我们现在想知道这组数据的平均值,这个时候我们就需要一个能算平均值的“黑箱子”,当我们将这组数据扔到这个算平均值的黑箱子中,这个黑箱子会给我们吐出这组数据的平均值。至于这个黑箱子里面的机关,我想有一些数学基础的同学都应该知道它是怎么运作的。

当然不使用函数这个概念,利用算平均数的计算公式和之前的一些对于数组中数据的操作,同样也可以算出平均值,但这样做就会发现每次碰到一个算平均数的时候,就需要写一大段代码,程序就会变得相当复杂。利用函数就可以把一些常用到的一些代码攒成一个黑箱子,然后定义如何往黑箱子中放东西,加工后出来什么东西。这样就可以让代码简化起来。利用函数还有一个好处就是简化一些学习负担。如果说算一个平均值不是什么难事,已经有现成的公式,实现起来也很简单,但现在假如我们有一组数据,我们想对这组数据做一个重复测量方差分析,如果对不了解计算方法的同学,要实现这个功能,就必须先找本书来看看计算公式是什么,然后再去编写程序,这样做就太花时间了。那还有一个办法就是可以去找一个别人写好的可以做重复测量方差分析的函数,我们将数据按照那个函数的格式写好,放到这个函数中,它最终就会得到结果,这样就省了我们很多时间。

matlab当中会提供给我们一些简单常用的函数,比如算一组数据的平均数,标准差,方差等等。但还有很多比较专业的函数,matlab是没办法提供的,这个时候就会有很多做相关行业的大牛们把这个专业要用到的东西写成一个个函数提供给我们使用。他们将这些函数打成一个包,就是我们经常能听到的matlab工具箱。在心理学当中经常使用到的工具箱有比如处理EEG/ERP数据的EEGLAB,ERPLAB,呈现刺激的Psychtoolbox,处理fMRI数据的SPM等等。如果这些还满足不了你,那么可以到matlab官方网站上专门有个file

exchange的地方,在这里你基本可以找到自己想要的东西。当然如果连这个都无法满足你的一些需求,那么我们只能自己来写一些函数了。会在后面简单的介绍如何自己创建函数。

1.4.2函数的使用

后面专门会有一节具体讲如何使用函数以及一些函数的常用方法,在这里我就简单举个例子来说明一下。

对于这样一个黑箱子,我们首先要知道这个黑箱子是用来做什么的,这个一般没什么问题;其次要知道往这个黑箱子中放什么东西,这些东西就是前面所说过的那些数据类型,比如一个整型的数,一个数组,一个字符串,一个逻辑型数据等等。当然有些黑箱子不只是需要一个东西,它有可能会让你先放一个数组,然后再放一个整数,当然有些黑箱子不需要你放东西。最后要知道最后这个黑箱子会给你一个什么样的东西,是一个数,还是一个字符串,还是一个数组等等,有些黑箱子可能也不会给你吐出什么东西。

对于绝大部分matlab函数,其语法大多都是

[输出1,输出2,输出3,…] =

函数名(输入1,输入2,…)

这里的函数名就是我们所说的黑箱子,输入就是往黑箱子中放的东西,输出就是黑箱子加工完这些输入之后返回给我们的东西。

下面就用算平均值这个函数在作为例子:

我们可能通过网上搜索,或者matlab的帮助文件,或者是一些教程,亦或者是别人的程序当中知道有一个算平均值函数是mean,这个时候我们就可以在matlab中输入

>> doc mean

这个时候就可以看到关于mean这个函数的一个介绍,我将内容分块展示在下面:

mean

Average or mean value of array

第一行介绍这个函数的名字是是什么(mean)

第二行介绍这个函数是做什么用的(计算一个数组的平均值)

Syntax

M = mean(A)

M = mean(A,dim)

Description

M = mean(A) returns the mean values of theelements

along different dimensions of an array.

If A is a vector, mean(A) returns the meanvalue of

A.

If A is a matrix, mean(A) treats thecolumns of A as

vectors, returning a row vector of mean values.

If A is a multidimensional array, mean(A)treats the

values along the first non-singleton dimension as vectors,

returningan array of mean values.

M = mean(A,dim) returns the mean values forelements

along the dimension of A specified by scalar dim. For

matrices,mean(A,2) is a column vector containing the mean value of

each row.

这段是介绍这个函数的语法,可以发现这个函数有两个用法

第一个用法:M = mean(A)

对比前面所说函数的通用用法,M就是输出(这里输出只有一个,所以可以省略掉前面通用语法中输出外面的那个方括号),mean就是函数名,而A就是输入。

在下面那个Description中看到:

当A是一个向量(vector)时,返回的是A的平均值,也就是说M就存的是一个数。这里的向量就是指一个一行的数组或者一个一列的数组。

当A是一个矩阵(matrix)的时候,返回的是A的每列数的均值,并将这些平均值存成一个行向量,这个时候M就是一行数据,是用数组的方式储存的。

当A是一个多维矩阵(multidimensionalarray)的时候,返回的是第一个非单个数的那个维度的均值,返回是是一个矩阵。(对于这个用法,用的地方很少,举个形象的例子,拿三维矩阵来说,就是一个长方体,将这个三维矩阵计算平均值的时候,每列数算一个均值,最后那些均值存成一个二维的矩阵,可以想成将这个矩阵从上往下压扁的那种。如果理解不了,也无所谓,一般这个用法基本用不到)

第二个用法:M = mean(A,dim)

这个时候会发现输入是两个东西,输出是一个东西,对于这个用法可以参照说明,简单的说就是比如前面那个用法,当A时一个矩阵的时候,返回的是A的每列数的均值,但我们想返回A的每行数的均值怎么办?这个时候就会用到这个用法,对于那个dim就是选择你要平均是按照哪个维度来计算,如果按照每列来算均值,那么dim就是1,而按照每行来算均值,那么dim就是2,比如我们要返回A的每行的均值,那么就可以写成

>>M = mean(A,2)

Examples

A = [1 2 3; 3 3 6; 4 6 8; 4 7

7];

mean(A)

ans =

3.0000 4.5000

6.0000

mean(A,2)

ans =

2.0000

4.0000

6.0000

6.0000

这个后面就是一个简单的例子,如果之前的用法看的不是很明白,通过看例子就知道用法是什么的。

See Also

corrcoef, cov, max, median, min, mode, std,var

matlab很人性化的会在后面显示一些函数,它发现你查询算平均值这个函数之后,觉得你有可能会用到比如算中位数,最大值,最小值什么的,于是它就会在这里罗列一些相关的函数,经常通过这种方法也可以了解到一些函数。

以上就是关于mean函数的介绍,当然还有很多其它的函数的用法,这里就需要大家自己去查帮助文件了,如果觉得英文不好理解,那么同样可以去百度或者google当中搜索其用法,也会有很多好心人将这些英文转成中文贴在了网上。

1.4.3 函数的创建

关于函数的创建是一个非常关键的用法,考虑到matlab新手,这里就只介绍最简单的创建方法。

在介绍之前,我还要介绍一下matlab的M文件编辑器,对于M文件,大家不需要恐慌,这里你就可以把它当成一个写字板就可以了。在matlab菜单当中点FileàNewàBlank M-file,或者用快捷键Ctrl+N,就可以出来一个类似写字板的东西,这个就是M文件编辑器。这个东西有啥用呢?我们会发现当我们在Command Window当中写命令的时候,只要按回车,那么这条命令就会立即被执行,但经常我们想写很多命令,然后让其一起执行,这个时候在Command

Window当中就显得很不方便,这个时候就可以用到这个M文件编辑器。

我们可以在刚才出来的那个写字板中写下我们想运行的命令,然后将这些命令选中,然后再按F9,就可以发现这些命令被粘贴在Command Window当中,然后一起运行了。

当然这个还不是M文件最主要的功能,我们可以利用M文件写函数。

1.4.3.1 创建函数的格式

当我们打开了M文件编辑器,如果要创建一个函数,那么在第一行写

function [ output_args ] = Untitled(input_args

)

其中function是不能变得,这里就是说这个M文件要写成一个函数。

output_args就可以换成你需要输出变量的变量名,如果需要输出多个变量,那么可以用逗号隔开,比如[M1,M2]

Untitled 是你要写的函数的函数名,对于函数名的建立可以参照之前变量名的一些要求去起,比如第一个字母不能是数字等等~,比如

selendpoint

input_args 换成你要输入变量的变量名,如果有多可以用逗号隔开

从第二行就可以写函数的主要内容了。

1.4.3.2 函数创建举例

比如我现在有一个向量,我想将这个向量的第一个数和最后一个数输出。对于这个要求,我在这里就写一个函数来实现这个要求。代码如下

function [first,last] =

selendpoint(array)

%这里按规矩写函数的声明介绍,我希望是输入一个向量,输出两个数

first = array(1);

%将array的第一个数赋值给first这个变量

last = array(end); %将array的最后一个数赋值给last这个变量

这样我们一个函数就写好了,将这个函数保存(也就是在M文件编辑器中保存),记得这里保存的文件名一定要和这个函数名保持一致,要不matlab就找不到这个函数了。这个时候我们就可以将这个M文件关掉。这个时候在Current

Folder当中我们会发现有个名字叫selendpoint.m的文件,这个就是我们的函数。注意:如果我们要调用自己写的这个函数,那么一定在设置这个函数所在的文件夹为当前文件夹(设置方法在前面的教程中有讲)

下面我们来试试我们写的这个函数,在commandwindow可以输入

>>A = rand(1,10)

%这个就是一个用来生成随机数的函数,函数用法可以自己查帮助

A =

0.1361 0.8693 0.5797 0.5499 0.1450 0.8530 0.6221

0.3510 0.5132 0.4018

>> [m1,m2] =

selendpoint(A) %使用我们刚才写的函数,这里的输入输出的变量名可以和在M文件中的不同

m1 =

0.1361

m2 =

0.4018

我们就得到了A的第一个数和最后一个数,分别存在了变量m1和m2当中。

%%%%%%%%%%%%%%%%我是华丽丽的分割线%%%%%%%%%%%%%%%%

函数的用法是整个matlab的关键,用好函数最重要的一点就是要弄清楚函数的输入和输出的数据类型以及存储方式。最后我们处理数据直白的说就是这些函数一点点搭建起来的。比如后面从txt中读取数据(用的是textread函数),从txt数据中摘取我们需要的那些数据(可能用到find,strmatch等函数),然后将取出的这些数据算平均值(mean)或者做两组数据的配对T检验(ttest函数)等。

对于函数的了解也是matlab编程中最重要的一步,你掌握函数越多,那么在后面处理数据的时候就会游刃有余。初学者也不用惧怕,很多函数也是在使用的过程中掌握的,不要认为对函数一点都不知道就打退堂鼓,如果希望学好,还希望能多加练习。相信Matlab在你后面的科研过程中会起到相当大得作用!

求介绍matlab函数用法的书,MATLAB初学者教程--函数用法的简单介绍相关推荐

  1. MATLAB GUI 文献或书,MATLAB GUI程序设计epub

    MATLAB GUI程序设计 作者:王广,邢林芳 MATLAB GUI程序设计 出版社:清华大学出版社 MATLAB GUI程序设计 内容简介 全书的编写基于当前版本的MATLAB环境,书中由浅入深地 ...

  2. python中pickle模块的用法_Python中json模块和pickle模块的简单介绍(附示例)

    本篇文章给大家带来的内容是关于Python中json模块和pickle模块的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Python中的json模块和pickl ...

  3. c语言编译找不到函数的原型,C语言入门教程-函数原型

    函数原型 现在,把程序中的所有函数声明函数原型已成为公认的良好编程风格.函数原型在真正定义函数之前,向后面的代码声明了函数的名称.参数和返回值的类型.为了理解函数原型的用处,请录入下面的程序并运行: ...

  4. python中format函数用法简书_Python 中format 的用法

    format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型 2.单个参数可以多次输出,参数顺序 ...

  5. adams和matlab联合仿真的书,MATLAB和ADAMS联合仿真

    1. 版本兼容问题. Adams和Matlab版本有兼容性.至少Adams2005+ Matlab7.ADAMS2005+Matlab6.5都是可以的.其他的我没有试过.一般而言,版本是没问题的.关于 ...

  6. python中format函数用法简书_Python format 格式化函数

    Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能. 基本语法是通过 {} 和 : 来代替以前的 % . format 函数可以接受不限个参数 ...

  7. python使用教程pandas-python之pandas简单介绍及使用(一)

    In [24]: s4[s4 > 9000] Out[24]: 数学 9001.0 dtype: float64 Series就先简要写到这,下面看pandas的另一种数据结构DataFrame ...

  8. matlab实习,matlab上实习指导书.doc

    matlab上实习指导书 Matlab上机实习指导书 目 录 SIMULINK的库模块----------------------------------30 附录3 转义符号------------ ...

  9. SAP UI5 初学者教程之二十八 - SAP UI5 应用的集成测试工具 OPA 介绍试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

最新文章

  1. 搜索4--noi6264:走出迷宫
  2. Octave添加搜索路径
  3. [转]Vi/Vim查找替换使用方法
  4. 贝叶斯优化python包_Bayesian2D-用贝叶斯优化方法求任意二维函数的最大值或最小值的软件包-Juhan Raidal...
  5. python现在时间减去过去时间等于20分钟怎么写_获取当前时间减去10分钟的话SQL语句怎么写...
  6. Ubuntu 删除dash 中无效的图标
  7. python r转义_Python快速入门系列之二:还学不会我直播跪搓衣板
  8. WEB前端视频教程网站推荐
  9. Linux安装vim命令
  10. 除了 DBA, SQL 人还能胜任的黄金职业
  11. 注册表改win 7更新服务器,uefi安装win7卡在更新注册表设置解决新方法(完美解决)...
  12. 第六次团队作业——Alpha冲刺之事后诸葛亮
  13. nmap扫描工具安装/升级/卸载教程
  14. syntax error:unterminated quoted string
  15. 没有躲过的坑--C++函数的默认参数(重新定义默认参数)
  16. 群晖Synology FileStation不显示Share文件夹的解决办法
  17. Nim问题和阶梯Nim(staircase nim)
  18. 微信小程序生成小程序码的方法
  19. checkbox获取勾选状态_jQuery判断checkbox选中状态
  20. 互联网金融中的分期贷款利率剖析

热门文章

  1. 队列在多线程中的应用
  2. 案例:用JS实现放大镜特效
  3. SQL 的Over 子句
  4. 路由协议重分发之RIP协议和EIGEP协议
  5. 极客新闻——03、陈庆敏:项目管理的三个关键
  6. 阿里某p9哭穷:300万年薪,依然挣扎在温饱线上!
  7. 一文揭秘领域驱动设计(DDD):领域和子域!
  8. MyBatis千万级数据查询解决方案,避免OOM
  9. 跟刘强东、雷军等大佬聊天后,我总结了:如何结交牛人,跟大咖做朋友!
  10. Kafka:消息是如何在服务端存储与读取的,你真的知道吗?