设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1587|回复: 0

Matlab匿名函数

[复制链接]

36

主题

375

金钱

563

积分

初级用户

发表于 2019-11-8 14:59:10 | 显示全部楼层 |阅读模式

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

匿名函数的基本格式
  1. handle = @(arglist)anonymous_function
复制代码

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

匿名函数的案例
按照基本格式,我们做一个小案例来测试。

案例场景
这里测试的是 RBF径向基函数,他的表达式是是这样的:
2.png
其中X 是样本点,Xi 是测试点,r 是核参数。
设样本点为0,测试点为-5到5,核参数分别取0.2、0.5、1.0、2.0。对比四种情况下的曲线变化规律。

案例代码
  1. clc,clear,close all;

  2. % 定义匿名函数
  3. K_RBF = @(x,xi,r) exp(-(x-xi).^2./(r.^2));

  4. % 设置变量取值范围
  5. xi = -5:0.01:5;
  6. x = zeros(size(xi));
  7. r = [0.2;0.5;1.0;2.0]*ones(size(xi));

  8. % 画图基础设置
  9. curveType = {'r-','b--','r-.','b-.'};
  10. r_legend = {'r=0.2','r=0.5','r=1.0','r=2.0'};

  11. % 画取不同的 r 值下的函数
  12. for i = 1:length(curveType)
  13.     plot(xi,K_RBF(xi,x,r(i,:)),curveType{i},'linewidth',2);
  14.     hold on
  15. end

  16. % 设置图像参数
  17. set(gca,'fontsize',24),set(gcf,'outerposition',get(0,'screensize'));
  18. legend(r_legend),xlabel('x_i'),ylabel('核函数值K(x,x_i)');
  19. title('RBF核函数在测试点 x=0 处的映射关系');

  20. % 保存图像
  21. print(gcf,'-djpeg','-r300','RBF核函数在测试点 x=0 处的映射关系');
复制代码


输出结果
3.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表