前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一起来学演化计算-matlab@(x)构造匿名函数

一起来学演化计算-matlab@(x)构造匿名函数

作者头像
演化计算与人工智能
发布2020-08-14 16:04:18
5850
发布2020-08-14 16:04:18
举报

@(x)处理匿名函数

  • 匿名函数为您提供了创建简单函数的快速方法,而无需每次都创建M文件。您可以使用语法
    • fhandle = @(arglist)body 构造一个匿名函数和该函数的句柄,其中body定义函数的主体,arglist是您可以传递给函数的参数列表。

示例

  • 给定一个例子,有一个方法类函数 Rastrigin.m
代码语言:javascript
复制
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的匿名函数
代码语言:javascript
复制
% 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),由此重构了函数
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DrawSky 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • @(x)处理匿名函数
    • 示例
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档