matlab @(x)构造匿名函数
一起来学演化计算-matlab@(x)构造匿名函数
觉得有用的话,欢迎一起讨论相互学习~Follow Me
@(x)处理匿名函数
- 匿名函数为您提供了创建简单函数的快速方法,而无需每次都创建M文件。您可以使用语法
- fhandle = @(arglist)body 构造一个匿名函数和该函数的句柄,其中body定义函数的主体,arglist是您可以传递给函数的参数列表。
示例
- 给定一个例子,有一个方法类函数 Rastrigin.m
function obj = Rastrigin(var,M,opt)
%Rastrigin function
% - var: design variable vector 决策变量向量
% - M: rotation matrix 旋转矩阵
% - opt: shift vector 偏移向量
dim = length(var);
var = (M*(var-opt)')'; % 将决策空间变量减去偏移量后乘以旋转矩阵
obj = 10*dim; % 由于每个维度都要加上10的数值,所以这里直接由把这一项提取出来
for i=1:dim
obj=obj+(var(i)^2 - 10*(cos(2*pi*var(i))));
end
end
- 但是在主函数中,我们将Rastrigin函数作为一个 每次只需改变变量x的函数,而并不需要每次都改变M和opt 并且成为一个结构体的一个函数成分。
- 为了不重新重构一个只有x变量的函数Rastrigin,我们根据原有的函数创建一个只有变量x的匿名函数
% Rastrigin function definition
n=40;
Tasks(1).dims=n;
M=orth(randn(n,n)); % 将随机向量求标准正交基
Tasks(1).fnc=@(x)Rastrigin(x,M); % x作为决策变量,M作为旋转矩阵,没有偏移向量
- @(x)表示匿名函数的变量只有x,匿名函数的函数体部分则是Rastrigin(x,M),由此重构了函数
matlab @(x)构造匿名函数的更多相关文章
- matlab学习笔记13_2匿名函数
一起来学matlab-matlab学习笔记13函数 13_2 匿名函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://ww2.mathworks.cn/help/m ...
- Matlab匿名函数,子函数,私有函数,重载函数,eval和feval函数
匿名函数,子函数,私有函数等函数类型 匿名函数: 匿名函数没有函数名,也不是.m文件,只包含一个表达式和输入输出参数. Fxy=@(x,y)x.^y+3*x*y x,y为输入输入参数,Fxy为函数名 ...
- Matlab匿名函数
Matlab可以通过function去定义一些功能函数,这使得代码变得简洁和高效.但是如果遇到的是一些简单的数学公式组成的函数表达式,继续用function去定义函数,似乎显得有些冗杂和多余.这时候, ...
- Matlab匿名函数,向量化和预分配,函数的函数,P码文件
匿名函数: 匿名函数是不存储在程序文件中.但与数据类型是 function_handle 的变量相关的函数.匿名函数可以接受输入并返回输出,就像标准函数一样.但是,它们可能只包含一个可执行语句. 例如 ...
- MATLAB中匿名函数与符号函数的转换
符号函数举例: syms x y=x+1; y1=diff(y); %求导 匿名函数举例: z=@(x)(x(1)+2*x(2)); t=z([2 3]); %计算z在x=[2 3]处的值 z=@(x ...
- 委托,匿名函数和lambda表达式
很早之前就接触到了委托,但是一直对他用的不是太多,主要是本人是菜鸟,能写的比较高级的代码确实不多,但是最近在看MSDN微软的类库的时候,发现了微软的类库好多都用到了委托,于是决定好好的研究研究,加深一 ...
- javascript 利用匿名函数对象给你异步回调方法传参数
先来创建一个匿名函数对象: /*** * 匿名函数 */ var callChangeBtn=new function(bugBtn){ this.chage=function(json){ bugB ...
- 匿名函数 lambda表达式(lambda expression)
阅读g2log时,发现有两行代码居然看不懂. 1. auto bg_call = [this, log_directory]() {return pimpl_->backgroundChang ...
- 第一百一十节,JavaScript匿名函数和闭包
JavaScript匿名函数和闭包 学习要点: 1.匿名函数 2.闭包 匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数.声明:本节内容需要有面向对象和少量设计模式基础,否则无法听懂 ...
随机推荐
- Bias vs. Variance(3)---用learning curves来判断bias/variance problem
画learning curves可以用来检查我们的学习算法运行是否正常或者用来改进我们的算法,我们经常使用learning cruves来判断我们的算法是否存在bias problem/varianc ...
- 样条插值法(Java)--在本地执行
该程序主要实现样条插值的目的,为本地执行java文件 该程序包含:样条插值法.读取文件,写入文件,字符型转double型方法等: 适合初学Java的人学习: 首次使用eclipse打jar包,中间很曲 ...
- MongoDB 主从复制及 自动故障转移
1.MongoDB 主从复制 MongoDB复制是将数据同步在多个服务器的过程. 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性. 复制还允许您从 ...
- 2019-2020-1 20199312《Linux内核原理与分析》第十一周作业
实验简介 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出 ...
- 如何修改host
因不可抗拒的原因,有些网站会被q,但只是比较恶心的域名DNS污染,并不需要tiizi,修改hosts文件即可. 以 www.youneed.win 为例: 首先,进入目录:C:\Windows\Sys ...
- log4j+junit+maven
本文在开发第一个maven示例的基础上进行扩展. 日志级别测试 在src\main\resources文件夹下新建log4j.properties log4j.rootLogger = warn,st ...
- redis详解(包含使用场景)
本文围绕以下几点进行阐述 1.为什么使用redis2.使用redis有什么缺点3.单线程的redis为什么这么快4.redis的数据类型,以及每种数据类型的使用场景5.redis的过期策略以及内存淘汰 ...
- PHP-FPM 的工作整理
1.php-fpm的配置文件 根据命令找到路径修改配置文件 ps -ef|grep php-fpm vim /home/php/etc/php-fpm.conf ;;;;;;;;;;;;;;;;;; ...
- AutoCAD .NET二次开发(一)
其他话不多说,直接进入主题,既然是二次开发,当然是用CAD平台已经封装好了很多类,我们需要熟悉和使用它们.常用的AutoCAD .NET API的四个主要DLL文件是: 名称 作用 备注 AcDbMg ...
- 发现Mathematica中求逆出错
发现Mathematica中应用Inverse求逆时出错.