精华内容
下载资源
问答
  • RBF高斯径向基核函数-svm
    千次阅读
    2021-04-24 18:26:40

    RBF高斯径向基核函数(单值:两个点相似性)

    XVec表示X向量。||XVec||表示向量长度。

    r表示两点距离。r^2表示r的平方。

    k(XVec,YVec) = exp(-1/(2*sigma^2)*(r^2))

    = exp(-gamma*r^2)...... 公式-1

    这里, gamma=1/(2*sigma^2)是参数, r=||XVec-YVec||

    实际上,可看作是计算2个点X与Y的相似性。很多参考书上,把YVec写作XVec',即 k(XVec, XVec'),也是一样的含义:两点相似性。由于Matlab上面XVec'代表XVec的转置向量(XVec)T,所以,为规避歧义,我记作k(XVec,YVec)。如:LibSVM代码,机器学习经典教材《Pattern Recognition and Machine Learning -Bishop》P312.(三大牛人巨著: Michael I. Jordan,加州大学伯克利分校计算机系/Jon Kleinberg,康奈尔大学计算机系/Bernhard Schlkopf德国蒂宾根马普所)。

    r是半径(radial),这也是径向基核函数(radial basis function)名称的由来。

    很容易,写出高斯RBF matlab代码:

    r = norm(XVec-YVec, 2); % L2范数嘛

    或者: r = sum((XVec-YVec).^2)^(1/2);

    k = exp(-gamma*r^2);

    假设X与Y矩阵的每一行是一个样本,如何求得K(X,Y)?

    假若X = train_data是训练数据, K(X,X)是训练核矩阵,可拿去LibSVM做自定义核训练。当然,这里只是童鞋们的一个练习。LibSVM svmtrain有RBF核(-t 2)。

    假若X = test_data 是测试数据, Y = train_data 是训练数据, 那么 K(X,Y)是测试核矩阵了。(svmpredict)

    MatLab下,核矩阵怎么求更高效?去掉for循环!

    推导下。

    MatLab下,X'代表X的转置矩阵。

    r^2 = ||XVec - YVec||^2

    = ||XVec||^2 + ||YVec||^2 - 2*XVec*YVec'

    = XVec*XVec' + YVec*YVec' - 2*XVec*YVec'

    r^2 = repmat( sum(X.^2,2), 1, size(Y,1) ) ...

    + repmat( sum(Y.^2,2), 1, size(X,1) )' ...

    - 2*X*Y' ;

    代入公式-1, 得到高斯径向基RBF核矩阵KRBF = K(X, Y):

    KRBF = exp(-gamma*r^2); % RBF核矩阵

    在LibSVM中,gamma默认是:1/num_features , 即X与Y的列数。

    假若X是m×d矩阵, Y是n×d矩阵,则KRBF = K(X, Y)是m×n矩阵;

    则KRBF = K(Y, Y)是n×n矩阵。

    例如:Corel5k图片库,提取出Gist全局视觉特征,训练数据4500×512矩阵Y,测试数据499×512矩阵X,特征数num_features = 512,那么 默认值 gamma = 1/512;

    高斯径向基RBF核矩阵KRBF 写成MatLab函数:

    function KMatrix = getKRBF(X, Y, gamma)

    r2 = repmat( sum(X.^2,2), 1, size(Y,1) ) ...

    + repmat( sum(Y.^2,2), 1, size(X,1) )' ...

    - 2*X*Y' ; % r^2(r的平方)

    KMatrix = exp(-gamma*r2);

    更多相关内容
  • 该代码包括了SVM的多核核函数的分类实现和可视化展示。
  • 两种方式调用C++生成的exe文件, 语法: status = system(command) [status,cmdout] = system(command) [status,cmdout] = system...该函数将启动新的 cmd/shell 进程、执行command、退出进程,然后返回到...

     两种方式调用C++生成的exe文件,

    语法:

    status = system(command)

    [status,cmdout] = system(command)

    [status,cmdout] = system(command,'-echo')

    说明

    status = system(command) 调用操作系统执行指定的命令。操作会等待命令执行完毕,然后再将命令的退出状态返回到 status 变量。

    该函数将启动新的 cmd/shell 进程、执行 command、退出进程,然后返回到 MATLAB® 进程command 对系统环境所做的更新对 MATLAB 不可见。

    示例

    [status,cmdout] = system(command) 还会将命令的输出返回到 cmdout。该语法对不需要用户输入的命令最有用,例如 dir

    [status,cmdout] = system(command,'-echo') 还在 MATLAB 命令行窗口中显示(回显)命令输出。该语法对需要用户输入并在 MATLAB 命令行窗口中正确运行的命令最有用。

    ExeFileName='generate_reference_data.exe';
    exePath = 'D:\softinstall\msys2\home\Administrator\workplacwe\build\bin\RelWithDebInfo\';
    ExeFilePath=fullfile(exePath,ExeFileName);
    Param1=[' ','D:\matlab\vescl\gauss\0.png'];%第一个参数,一定要有' '
    Param2=[' ','--config D:\matlab\vescl\gauss\vcsel_config(single_plane)'];
    Cmd=[ExeFilePath ,Param1 ,Param2];
    
    [status, results]=system('command','-echo');
    %%%[status,result] = system(['D:\softinstall\msys2\home\Administrator\workplacwe\build\bin\RelWithDebInfo\generate_reference_data.exe "D:\matlab\vescl\gauss\0.png" --config "D:\matlab\vescl\gauss\vcsel_config(single_plane)"'],'-echo') ;
    [status,result] = system(['D:\coding\save_matching_info\Multiple_reference_plane0221\RelWithDebInfo\depth_magic_runner.exe   "Z:\junfeng\temprature_compensate_figures\fatman mini#25\data\',num2str(x(t),'%.0f'),'\.*.raw"     --config    "C:\Users\Administrator\Desktop\data\晚上\Thinmanmini#071#0420\Thinmanmini#071#0420"']) ;
    

    高斯核函数,实例 

    % 
    m=50;
    n=2;
    x=0:1:100;
    y=exp(-(x-m).^2/(2*n^2));
    subplot(2,1,1)
    plot(x,y)
    subplot(2,1,2)
    z=normrnd(50,2,100,1);
    plot(z)
    z=0:1:100; 
    d=normpdf(z,50,2); 
    plot(z,d)
    

    参考:https://ww2.mathworks.cn/help/matlab/ref/system.html

    展开全文
  • 资源名:MATLAB 高斯核密度估计算法 程序源码.zip 资源类型:程序源代码 源码说明: 基于MATLAB编写的核密度估计方法,采用的核是高斯核,包含完整源码和注释,非常适合借鉴学习 适合人群:新手及有一定经验的开发...
  • 高斯核函数

    千次阅读 2018-06-27 15:28:55
    高斯函数:a表示得到曲线的高度,b是指曲线在x轴的中心,c指width(与半峰全宽有关),图形如下:特点: 将二次函数和指数函数结合,指数是一个二次函数。半峰全宽(函数峰值一半处相距的宽度):其中半宽长度:积分不...

    高斯函数:

    高斯函数

    a表示得到曲线的高度,b是指曲线在x轴的中心,c指width(与半峰全宽有关),图形如下:

    高斯函数图形

    特点: 将二次函数和指数函数结合,指数是一个二次函数。

    半峰全宽(函数峰值一半处相距的宽度):

    半峰全宽

    其中半宽长度:

    FDWH

    积分不存在,单反常积分可以利用高斯积分求得:

    高斯函数积分

    展开全文
  • Matlab---自适应高斯核

    2021-04-25 11:08:48
    MCNN提出了适用于高密度人群的自适应高斯核:笔者所理解的自适应高斯核函数:%function:通过高斯核产生相应的密度矩阵%parameter: im:输入图像,灰度图; points:标注的点[X Y],n*2的矩阵function im_density = ...

    MCNN提出了适用于高密度人群的自适应高斯核:

    935a74d83a50

    笔者所理解的自适应高斯核函数:

    %function:通过高斯核产生相应的密度矩阵

    %parameter: im:输入图像,灰度图; points:标注的点[X Y],n*2的矩阵

    function im_density = get_density_map_autogaussian(im,points)

    im_density = zeros(size(im));

    [h,w] = size(im_density);

    if(isempty(points))

    return;

    end

    %points为1行

    if(length(points(:,1))==1)

    x1 = max(1,min(w,round(points(1,1)))); %round:四舍五入,x1变成points(1,1)处的整数

    y1 = max(1,min(h,round(points(1,2))));

    im_density(y1,x1) = 255;

    return;

    end

    for j = 1:length(points)

    max_kernel = 65; %最大高斯核尺寸

    normal_kernel = 35; %默认高斯核尺寸

    beta = 0.3; %MCNN中给定的参数

    k = 6; %近邻数

    maxpixel = 80; %近邻的最大距离,像素

    % f_sz = normal_kernel;

    % sigma = beta * f_sz;

    x = min(w,max(1,abs(double(floor(points(j,1))))));

    y = min(h,max(1,abs(double(floor(points(j,2))))));

    if(x > w || y > h)

    continue;

    end

    %--------%auto adaptive 自适应高斯核--------

    atemp = [];

    for i = 1:length(points)

    if i == j

    continue;

    end

    xk = min(w,max(1,abs(double(floor(points(i,1))))));

    yk = min(w,max(1,abs(double(floor(points(i,2))))));

    if(xk > w || yk > h)

    continue;

    end

    dis = sqrt( ((xk-x)^2 + (yk-y)^2) );

    atemp = [atemp dis];

    end

    btemp = sort(atemp);

    sum = 0;

    count = 0;

    if k >= length(points)

    k = length(points) - 1;

    end

    for m = 1:k

    if btemp(m) > maxpixel

    break;

    end

    sum = sum + btemp(m);

    count = count + 1;

    end

    if count > 0

    temp = sum/count;

    else

    temp = normal_kernel;

    end

    f_sz = double(floor(temp));

    if mod(f_sz, 2) == 0

    f_sz = double(f_sz + 1);

    end

    if f_sz > (max_kernel + 1)

    f_sz = max_kernel;

    end

    sigma = beta * f_sz;

    % fprintf("x:%d,y:%d,f_sz:%d,sigma:%d\n",x,y,f_sz, sigma);

    %--------auto adaptive 自适应高斯核定义结束--------

    H = fspecial('Gaussian',[f_sz, f_sz],sigma);

    %高斯核边界限定,x方向:→,y方向:↓

    x1 = x - double(floor(f_sz/2)); y1 = y - double(floor(f_sz/2)); %x1左边界,y1上边界

    x2 = x + double(floor(f_sz/2)); y2 = y + double(floor(f_sz/2)); %x2右边界,y2下边界

    dfx1 = 0; dfy1 = 0; dfx2 = 0; dfy2 = 0;

    change_H = false;

    if(x1 < 1)

    dfx1 = abs(x1)+1;

    x1 = 1;

    change_H = true;

    end

    if(y1 < 1)

    dfy1 = abs(y1)+1;

    y1 = 1;

    change_H = true;

    end

    if(x2 > w)

    dfx2 = x2 - w;

    x2 = w;

    change_H = true;

    end

    if(y2 > h)

    dfy2 = y2 - h;

    y2 = h;

    change_H = true;

    end

    x1h = 1+dfx1; y1h = 1+dfy1; x2h = f_sz - dfx2; y2h = f_sz - dfy2;

    if (change_H == true)

    H = fspecial('Gaussian',[double(y2h-y1h+1), double(x2h-x1h+1)],sigma);

    end

    im_density(y1:y2,x1:x2) = im_density(y1:y2,x1:x2) + H;

    end

    end

    转换为密度图:

    i = 45;

    dataset = 'A';

    path = ['../data/original/shanghaitech/part_' dataset '_final/train_data/images/'];

    gt_path = ['../data/original/shanghaitech/part_' dataset '_final/train_data/ground_truth/'];

    load(strcat(gt_path, 'GT_IMG_',num2str(i),'.mat')) ;

    input_img_name = strcat(path,'IMG_',num2str(i),'.jpg');

    im = imread(input_img_name);

    [h, w, c] = size(im);

    if (c == 3)

    im = rgb2gray(im); %转化成[h w 1]的矩阵灰度图

    end

    figure(1)

    imshow(im)

    hold on

    annPoints = image_info{1}.location;

    im_density = get_density_map_autogaussian(im,annPoints);

    %sum(sum(im_density))

    %im_density = get_density_map_gaussian(im,annPoints);

    figure(2)

    cmap = colormap(jet(210));

    imagesc(im_density,[0 max(max(im_density))])

    %imagesc(im_density,[0 0.038])

    colorbar

    935a74d83a50

    935a74d83a50

    935a74d83a50

    MCNN论文中的插图

    与论文插图接近。

    展开全文
  • 典型的图像算法用到高斯金字塔的概率较大, 在构造高斯金字塔的过程中其中一个步骤就是进行高斯模糊,利用MATLAB实现一张图片的高斯模糊,仅仅通过修改尺度因子便能对图像进行不同程度的模糊
  • 一个画高斯三维图像的matlab脚本文件,可以画出漂亮的图像
  • 在网上查阅资料,发现很少用Python进行高斯函数的三维显示绘图的,原因可能是其图形显示太过怪异,没有MATLAB精细和直观。 回顾一下二维高斯公式: σ此处取3。 在MATLAB下的程序为: u=[-10:0.1:10]; v=[-10:0.1:...
  • 二维高斯卷积Matlab和OpenCV实现

    千次阅读 2021-03-12 20:14:59
    1、二维高斯函数 G(x,y)=12πσ2exp⁡(−x2+y22σ2)G(x,y)=\frac{1}{2\pi {{\sigma }^{2}}}\exp \left( -\frac{{{x}^{2}}+{{y}^{2}}}{2{...3、Matlab实现 sigma1=2; k=5; % kernel大小 pai=3.1415926; kernel=zeros(k);
  • 高斯卷积模板(高斯函数)Matlab代码,可实现二维高斯卷积模板的生成功能。M文件,可用记事本打开。
  • 本人初看高斯核函数,写了一个小的Matlab程序,根据看的论文讲宽度参数设为了0.05,结果无论数据矩阵如何变化,得到的高斯核函数都是一个单位矩阵,非常不解,菜鸟一枚,求赐教
  • 该代码包括了SVM的多核核函数的分类实现和可视化展示。
  • matlab常用核函数

    千次阅读 2021-04-20 03:05:33
    俞梅洪 【作者单位】闽南师范大学计算机科学与工程系 ......SVM 分类核函数及参数选择比较 奉国和 【摘要】支持向量机(SVM)被证实在分类领域性能良好,但其分类性能受到 核函数及参数影响。讨论核函数及参数对 SVM ...
  • MATLAB-高斯核密度估计

    热门讨论 2010-03-25 09:12:10
    主要用MATLAB编写的核密度估计方法,采用的核是高斯核
  • (1)如何采用线性核?...严格讲,线性核也要像高斯核一样调整c这个参数,Libing wang讲一般C=1效果比较好,可能调整效果差异不大,当然要看具体的数据集。c大,从SVM目标函数可以看出,c越大,相当于惩罚松弛...
  • Multivariate Gaussian kernel in any derivative orderNDGAUSS: create ND gaussian kernel in any derivative order.g = ndgauss(hsize,sigma);[g,xi,yi,..] = ndgauss(hsize,sigma);Inputs:- hsize is N-length o...
  • 绘制高斯函数

    2013-09-06 10:49:11
    主要显示或许卫星图片的直方图,其直方图集中在灰度级的暗端,利用高斯函数修改图像的直方图
  • 二维高斯核函数(python)

    万次阅读 2017-12-12 18:38:13
    二维高斯核函数python版
  • matlab自适应高斯核

    2020-03-23 13:49:42
    matlab自适应高斯核 %function:通过高斯核产生相应的密度矩阵 %parameter: im:输入图像,灰度图; points:标注的点[X Y],n*2的矩阵 function im_density = get_density_map_autogaussian(im,points) im_density...
  • C语言计算高斯核函数

    2021-05-22 00:47:22
    是中心点坐标,σxσy是方差,图示如下,A= 1,xo= 0,yo= 0, σx= σy= 1 对于学图像专业的人来说,对图像进行高斯滤波应该不会陌生,本质上就是将图像与高斯核进行卷积。但是高斯核是如何生成的呢。matlab中有函数能...
  • 高斯函数(Gaussian function)的详细分析

    万次阅读 多人点赞 2017-06-11 20:26:22
     论文中遇到很重要的一个元素就是高斯核函数,但是必须要分析出高斯函数的各种潜在属性,本文首先参考相关材料给出高斯核函数的基础,然后使用matlab自动保存不同参数下的高斯核函数的变化gif动图,同时分享出源...
  • 高斯核分为水平方向和垂直方向,先后对图像进行卷积处理,可提高处理速度。function output=gaussFilter(I,sigma)output=I;ksize=double(uint8(3*sigma)*2+1);%窗口大小一半为3*sigmawindow = fspecial('gaussian'...
  • 高斯函数在图像处理中的应用

    千次阅读 2021-04-21 11:32:15
    高斯函数简介谓径向基函数 (Radial Basis Function 简称RBF), 就是某种沿径向对称的标量函数。 通常定义为空间中任一点...最常用的径向基函数是高斯核函数 ,形式为k(||x-xc||)=exp{- ||x-xc||^2/(2*σ)^2) }其中xc为...
  • %% 生成一个高斯函数函数与散斑点的灰度分布具有有较高的一致性,即可以很好的仿真当前的 dia = 7;%散斑直径 sigma = 2; gausFilter = fspecial('gaussian', [dia,dia], sigma); % figure times=19;%奇数 kernel=...
  • 针对采用高斯过程进行建模时,不同核函数形式有着不同学习效果的问题,提出了一种自定义的平方指数形式的核函数,并基于多项式函数拟合对这种新型的核函数进行了数值仿真。仿真结果表明,该核函数不但可以提高模型的...
  • 高斯概率密度函数matlab实现

    千次阅读 2017-07-26 16:28:09
    %%一维高斯函数% 生成均值为0,标准差为1的一维高斯概率密度函数 mu=0; sigma=1; x=-6:0.1:6; y=normpdf(x,mu,sigma); plot(x,y); %%二维或多维高斯函数figure;mu=[0 0];sigma=[0.3 0;0 0.35];[x y]=mesh
  • 本文对高斯过程进行公式推导、原理阐述、可视化以及代码实现,介绍了以高斯过程为基础的高斯过程回归 Gaussian Process Regression 基本原理、超参优化、高维输入等问题。 一元高斯分布公式 其概率密度公式如下: ...
  • MATLAB编程(4)——MATLAB绘制二维高斯函数的三维图

    万次阅读 多人点赞 2019-01-15 22:55:47
    本篇博文记录使用MATLAB绘制二维高斯函数的三维图。 用到的MATLAB函数——mesh()(绘制三维线框图)和surf()(绘制三维表面图)。 MATLAB命令窗口输入&gt;&gt; doc 函数名,可以查看相关函数的帮助文档。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,007
精华内容 2,402
关键字:

高斯核函数matlab实现

matlab 订阅