Matlab匿名函數


Matlab可以通過function去定義一些功能函數,這使得代碼變得簡潔和高效。但是如果遇到的是一些簡單的數學公式組成的函數表達式,繼續用function去定義函數,似乎顯得有些冗雜和多余。這時候,就可以嘗試運用匿名函數了。


匿名函數的基本格式

handle = @(arglist)anonymous_function

其中handle為調用匿名函數時使用的名字。arglist為匿名函數的輸入參數,可以是一個,也可以是多個,用逗號分隔。anonymous_function為匿名函數的表達式。


匿名函數的案例

按照基本格式,我們做一個小案例來測試。

案例場景

這里測試的是 RBF徑向基函數,他的表達式是是這樣的:

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

其中$ \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 處的映射關系');

輸出結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM