• matlab @(x)构造匿名函数


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

    觉得有用的话,欢迎一起讨论相互学习~

    我的微博我的github我的B站

    参考文献
    https://www.ilovematlab.cn/thread-81614-1-1.html

    @(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),由此重构了函数
  • 相关阅读:
    调试跳转动态打印
    PHP对redis操作详解
    SSL证书没有绿锁您与此网站建立的连接并非完全安全解决办法
    63. Unique Paths II
    62. Unique Paths
    40. Combination Sum II
    60. Permutation Sequence
    59. Spiral Matrix II
    批量修改名字的脚本
    57. Insert Interval
  • 原文地址:https://www.cnblogs.com/cloud-ken/p/11231700.html
Copyright © 2020-2023  润新知