如果你刚接触matlab,可以看这篇Matlab自定义函数详解

MATLAB自定义函数形式

function [a,b,c] = funname(x1,x2,x3)

输入变量

对于输入变量,MATLAB可以识别输入变量的个数,通过nargin来记录当前输入变量个数。

if nargin == 1
···
elseif nargin == 2
····
elseif nargin == 3
···
end

通过nargin判断变量个数,然后再写对应的程序。

输出变量

对于输出变量,MATLAB可以根据调用情况来输出结果

y = funname(x1)
[y1,y2] = funname(x1)
[y1,y2,y3] = funnamr(x1)

根据调用的格式,自动忽略没匹配上的输出结果。

函数调用帮助

函数做好之后,需要写好说明,否则代码的通用性会很差!matlab自动将函数下的注释当作函数说明,通过help来查看帮助文档

help funname
function y = mean(x,dim,flag,flag2)
%MEAN Average or mean value.
% S = MEAN(X) is the mean value of the elements in X if X is a vector.
% For matrices, S is a row vector containing the mean value of each
% column.
% For N-D arrays, S is the mean value of the elements along the first
% array dimension whose size does not equal 1.

上面是mean函数的帮助说明。

自己动手写一个函数

这里我们来动手写一个数据标准化的函数,具体要求是这样的

对于一组数据 $$ x_{1}, x_{2}, \cdots, x_{m} $$, 分高优指标(越大越好),低优指标(越小越好),中优指标(越趋近于某个值越好),均优指标(越趋近于某个区间越好),四种标准化方式对数据标准化。

function [x] = standlize(v,type,q)
%STANDLIZE 对列向量v 进行归一化 返回归一化后的向量 x
% x = STANDLIZE(v,'low') 对列向量按低优指标进行归一化
% x = STANDLIZE(v,'high') 对列向量按高优指标进行归一化
% x = STANDLIZE(v,'middle',q) 对列向量按中优指标进行归一化
% x = STANDLIZE(v,'between',q) 其中 q = [a , b] 对列向量按均优指标进行归一化
m = length(v);
if nargin==2
if strcmp(type,'low') %低优指标
for i=1:m
x(i) = (max(v)-v(i))/(max(v)-min(v));
end
elseif strcmp(type,'high') %高优指标
for i=1:m
x(i) = (v(i)-min(v))/(max(v)-min(v));
end
end
elseif nargin==3
if strcmp(type,'middle')&&length(q)==1 %中优指标
for i=1:m
if v(i) < q
x(i) = 1 - (q-v(i))/max([q-min(v),max(v)-q]);
elseif v(i) > q
x(i) = 1 - (v(i)-q)/max([q-min(v),max(v)-q]);
else
x(i) = 1;
end
end
elseif strcmp(type,'between')&&length(q)==2 %均优指标
for i=1:m
if v(i) < q(1)
x(i) = 1-(q(1)-v(i))/(max([q(1)-min(v),max(v)-q(2)]));
elseif v(i) > q(2)
x(i) = 1-(v(i)-q(2))/(max([q(1)-min(v),max(v)-q(2)]));
else
x(i)=1;
end
end
end
end
x = reshape(x,size(v));
end

运行测试

可以看到,对于1到10这样一组数据,通过standlize这个函数的不同调用方式,实现了数据的指标标准化。通过help可以查看用法。

MATLAB自定义函数的更多相关文章

  1. matlab 自定义函数及调用

    这一篇博客主要学习了: 第一,自定义函数优点有很多,比如可重复利用:容易纠错,以后直接装入大工程里(更重要的是,实参是复制给形参的,在自定义函数中运行时形参独立显示,这一点和C不一样). 第二,通过h ...

  2. matlab自定义函数的五种表示(前2种重点)

    1.命令文件/函数文件+函数文件:多个M文件 2.函数文件+子函数:一个M文件 3. inline:无需M文件 4.符号表达式+subs方式:无需M文件 5.字符串+subs方式:无需M文件 第一种: ...

  3. Matlab中函数定义方法

    Matlab自定义函数的六种方法 n1.函数文件+调用函数(命令)文件:需单独定义一个自定义函数的M文件: n2.函数文件+子函数:定义一个具有多个自定义函数的M文件: n3.Inline:无需M文件 ...

  4. Matlab基本功能:自定义函数、添加块注释、定时器的试用

    1.自定义函数 新建一个m文件 在m文件里面第一行输入function [X,Y]=pll(X1,Y1,X2,Y2),这里x1 x2 y1 y2是你函数的输入值, x y是输出值,接着定义你要实现的功 ...

  5. matlab 子函数的使用

    本文参考了该篇博客:http://www.cnblogs.com/MarshallL/p/4048846.html 对其进行学习,为我所用吧. 一. 在matlab的函数定义中,如果函数如果函数较长或 ...

  6. Origin使用自定义函数拟合曲线函数

    (2019年2月19日注:这篇文章原先发在自己github那边的博客,时间是2016年10月28日) 最近应该是六叔的物化理论作业要交了吧,很多人问我六叔的作业里面有两道题要怎么进行图像函数的拟合.综 ...

  7. Mysql - 存储过程/自定义函数

    在数据库操作中, 尤其是碰到一些复杂一些的系统, 不可避免的, 会用到函数/自定义函数, 或者存储过程. 实际项目中, 自定义函数和存储过程是越少越好, 因为这个东西多了, 也是一个非常难以维护的地方 ...

  8. Entity Framework 6 Recipes 2nd Edition(10-5)译 -> 在存储模型中使用自定义函数

    10-5. 在存储模型中使用自定义函数 问题 想在模型中使用自定义函数,而不是存储过程. 解决方案 假设我们数据库里有成员(members)和他们已经发送的信息(messages) 关系数据表,如Fi ...

  9. mysql 常用自定义函数解析

    -- /* -- * 用于获取一记录数据,根据传入的分隔字符delim,索引位置pos,返回相对应的value -- * SELECT Json_getKeyValue({"A": ...

随机推荐

  1. Ferguson游戏&&Ua12293——打表找规律

    题意 有两个盒子分别有m颗糖果和n颗糖果,每次移动是将一个盒子清空而把另一个盒子里得一些糖果拿到被清空的盒子,使得两个盒子至少各有一个.无法移动者输. 分析 设初始状态为(m, n),显然(1, 1) ...

  2. 基于数组的栈(Java)

    package com.rao.linkList; /** * @author Srao * @className ArrayStack * @date 2019/12/3 13:41 * @pack ...

  3. python--io多路复用之select实现

    1.I/O多路复用指:通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作. 2.I/O多路复用避免阻塞在io上,原本为多进程或多线程来接收多 ...

  4. [RN] React Native 使用开源库 react-native-image-crop-picker 实现图片选择、图片剪裁

    React Native 使用开源库 react-native-image-crop-picker 实现图片选择.图片剪裁 该库可以实现启动本地相册和照相机来采集图片,并且提供多选.图片裁剪等功能,支 ...

  5. MYSQL避免重复插入记录的三种方法

      方案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: insert ignore into table_name(ema ...

  6. Java中的锁原理、锁优化、CAS、AQS详解!

    阅读本文大概需要 2.8 分钟. 来源:jianshu.com/p/e674ee68fd3f 一.为什么要用锁? 锁-是为了解决并发操作引起的脏读.数据不一致的问题. 二.锁实现的基本原理 2.1.v ...

  7. WebSocket专题(阿里)

    我们的项目中使用了websocket 用java-websocket 开源项目做的,阿里的人问我用啥实现的websocket一时没有答上来 回来做了总结: 1.前言 最近有同学问我有没有做过在线咨询功 ...

  8. hinkphp项目部署到Linux服务器上报错“模板不存在”如何解决

    检查了服务器上的文件,并没有缺少文件,再次上传文件到服务器,还是报错.莫名其妙,怀疑是代码问题. 仔细检查后,发现是模板的文件名问题: 用过TP的都知道:thinkphp会在$this->dis ...

  9. 图片验证码识别:ModuleNotFoundError: No module named 'ShowapiRequest'

    请求示例 # python3.6.5 # 需要引入requests包 :运行终端->进入python/Scripts ->输入:pip install requests from Show ...

  10. WebGL学习笔记(十二):加载模型文件

    目前为止,我们用到的模型顶点uv信息等,都是直接定义在代码中的,实际使用中,这些数据应该是由3D编辑器编辑好后按照一定的格式存储在文件中的,我们需要从文件中提取出对应的数据之后,组合成我们可以使用的信 ...