• Matlab匿名函数


    Matlab可以通过function去定义一些功能函数,这使得代码变得简洁和高效。但是如果遇到的是一些简单的数学公式组成的函数表达式,继续用function去定义函数,似乎显得有些冗杂和多余。这时候,就可以尝试运用匿名函数了。


    匿名函数的基本格式

    handle = @(arglist)anonymous_function
    

    其中handle为调用匿名函数时使用的名字。arglist为匿名函数的输入参数,可以是一个,也可以是多个,用逗号分隔。anonymous_function为匿名函数的表达式。


    匿名函数的案例

    按照基本格式,我们做一个小案例来测试。

    案例场景

    这里测试的是 RBF径向基函数,他的表达式是是这样的:

    [K_{R B F}left(mathbf{X}, mathbf{X}_{i} ight)=exp left(-frac{left|mathbf{x}-mathbf{x}_{i} ight|^{2}}{r^{2}} ight) ]

    其中$ mathbf{X}$ 是样本点,(mathbf{X}_{i}) 是测试点,(r) 是核参数。

    设样本点为0,测试点为-5到5,核参数分别取0.2、0.5、1.0、2.0。对比四种情况下的曲线变化规律。


    案例代码

    clc,clear,close all;
    
    % 定义匿名函数
    K_RBF = @(x,xi,r) exp(-(x-xi).^2./(r.^2));
    
    % 设置变量取值范围
    xi = -5:0.01:5;
    x = zeros(size(xi));
    r = [0.2;0.5;1.0;2.0]*ones(size(xi));
    
    % 画图基础设置
    curveType = {'r-','b--','r-.','b-.'};
    r_legend = {'r=0.2','r=0.5','r=1.0','r=2.0'};
    
    % 画取不同的 r 值下的函数
    for i = 1:length(curveType)
        plot(xi,K_RBF(xi,x,r(i,:)),curveType{i},'linewidth',2);
        hold on
    end
    
    % 设置图像参数
    set(gca,'fontsize',24),set(gcf,'outerposition',get(0,'screensize'));
    legend(r_legend),xlabel('x_i'),ylabel('核函数值K(x,x_i)');
    title('RBF核函数在测试点 x=0 处的映射关系');
    
    % 保存图像
    print(gcf,'-djpeg','-r300','RBF核函数在测试点 x=0 处的映射关系');
    

    输出结果

  • 相关阅读:
    一次惨痛的debug的经历-RuntimeError: CUDA error: an illegal memory access was encountered
    Rank loss调研
    守护进程 supervisor
    PHP实现异步请求非阻塞
    PHP实现图片和文字水印(PHP给图片添加水印功能)
    虚拟机相关博客
    小师妹学JavaIO之:文件系统和WatchService
    后端 Java ActionEvent getModifiers()
    Java中常见的锁简述
    关键系统的JVM参数推荐
  • 原文地址:https://www.cnblogs.com/gshang/p/11663727.html
Copyright © 2020-2023  润新知