MATLAB自定义函数
如果你刚接触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自定义函数的更多相关文章
- matlab 自定义函数及调用
这一篇博客主要学习了: 第一,自定义函数优点有很多,比如可重复利用:容易纠错,以后直接装入大工程里(更重要的是,实参是复制给形参的,在自定义函数中运行时形参独立显示,这一点和C不一样). 第二,通过h ...
- matlab自定义函数的五种表示(前2种重点)
1.命令文件/函数文件+函数文件:多个M文件 2.函数文件+子函数:一个M文件 3. inline:无需M文件 4.符号表达式+subs方式:无需M文件 5.字符串+subs方式:无需M文件 第一种: ...
- Matlab中函数定义方法
Matlab自定义函数的六种方法 n1.函数文件+调用函数(命令)文件:需单独定义一个自定义函数的M文件: n2.函数文件+子函数:定义一个具有多个自定义函数的M文件: n3.Inline:无需M文件 ...
- Matlab基本功能:自定义函数、添加块注释、定时器的试用
1.自定义函数 新建一个m文件 在m文件里面第一行输入function [X,Y]=pll(X1,Y1,X2,Y2),这里x1 x2 y1 y2是你函数的输入值, x y是输出值,接着定义你要实现的功 ...
- matlab 子函数的使用
本文参考了该篇博客:http://www.cnblogs.com/MarshallL/p/4048846.html 对其进行学习,为我所用吧. 一. 在matlab的函数定义中,如果函数如果函数较长或 ...
- Origin使用自定义函数拟合曲线函数
(2019年2月19日注:这篇文章原先发在自己github那边的博客,时间是2016年10月28日) 最近应该是六叔的物化理论作业要交了吧,很多人问我六叔的作业里面有两道题要怎么进行图像函数的拟合.综 ...
- Mysql - 存储过程/自定义函数
在数据库操作中, 尤其是碰到一些复杂一些的系统, 不可避免的, 会用到函数/自定义函数, 或者存储过程. 实际项目中, 自定义函数和存储过程是越少越好, 因为这个东西多了, 也是一个非常难以维护的地方 ...
- Entity Framework 6 Recipes 2nd Edition(10-5)译 -> 在存储模型中使用自定义函数
10-5. 在存储模型中使用自定义函数 问题 想在模型中使用自定义函数,而不是存储过程. 解决方案 假设我们数据库里有成员(members)和他们已经发送的信息(messages) 关系数据表,如Fi ...
- mysql 常用自定义函数解析
-- /* -- * 用于获取一记录数据,根据传入的分隔字符delim,索引位置pos,返回相对应的value -- * SELECT Json_getKeyValue({"A": ...
随机推荐
- Boring counting HDU - 3518 (后缀数组)
Boring counting \[ Time Limit: 1000 ms \quad Memory Limit: 32768 kB \] 题意 给出一个字符串,求出其中出现两次及以上的子串个数,要 ...
- Hibernate——离线查询
1.Criteria查询方式: (1)一般方式: 缺点:每一次查询dao层都需要书写对应的方法,离线查询可以解决这个问题. (2)离线方式: 2.离线查询 用DetachedCriteria来构造查询 ...
- vuex传递数据的流程
当组件修改数据的时候必须通过store.dispatch来调用actions中的方法,当actions中的方法被触发的时候通过调用commit的方法来触发mutations里面的方法,mutation ...
- 中国大学生计算机系统与程序设计竞赛 CCF-CCSP-2016 选座( ticket_chooser )
选座( ticket_chooser ) 不会正解,欢迎讨论 //60分 #include<cstdio> #define max(a,b) (a)>(b)?a:b #define ...
- .NET总结--泛型与泛型集合,应用场景
泛型优点 1.提高代码复用性,代码简洁直观 2.直接存储数据类型免去数据类型之间得隐式转换 3.免去拆箱装箱过程,提高效率 4.数据类型安全,存储时会验证是否对应该类型 泛型集合 一. ArrayLi ...
- lintcode- 22.平面表
题目描述 22. 平面列表 给定一个列表,该列表中的每个要素要么是个列表,要么是整数.将其变成一个只包含整数的简单列表. 样例 给定 [1,2,[1,2]],返回 [1,2,1,2]. 给定 [4,[ ...
- 如何新建WebAPI,生成注释,TestAPI的项目
一.新建WebAPI的项目 1. 在Web下,ASP.NET Web 应用程序,点击确定 2. 点击确定 3. 如图所示, 新建Controller 4 . 运行项目 二.注释 1. 在生成中,勾选x ...
- HustOJ二次开发之修改数据库连接池
有的时候我们会因为某种业务需要的情况下,需要修改hustoj默认的数据库连接池之类的. 修改数据库连接池步骤 进入到对应的目录 /home/judge/src/web/include 找到db_inf ...
- Guava Cache 缓存实现与源码分析
目录 一.概述 1.内存缓存 2.核心数据结构 二.具体实现 0.一览众山小 1.CacheBuilder 构建器 2.LocalCache 一.概述 1.内存缓存 可看作一个jdk7的concurr ...
- [BUAA软工]提问回顾与个人总结
提问回顾与个人总结 项目 内容 所属课程 2019春季计算机学院软件工程(任健) 所属作业 提问回顾与问题总结 课程目标 理解软件工程的作用和重要性,提升工程能力,团队协作能力 作业目标 回顾软工课程 ...