Matlab 高斯基函数返回向量而不是标量
我试图在matlab中实现高斯基函数,但我不知道如何使它不返回向量。我的数据是10000(样本)x21(特征)。我一直在做研究,我看到了使用统计工具箱的建议,但我只想使用matlab代码。下面是我正在使用的高斯基函数Matlab 高斯基函数返回向量而不是标量,matlab,vector,gaussian,Matlab,Vector,Gaussian,我试图在matlab中实现高斯基函数,但我不知道如何使它不返回向量。我的数据是10000(样本)x21(特征)。我一直在做研究,我看到了使用统计工具箱的建议,但我只想使用matlab代码。下面是我正在使用的高斯基函数 function [ scalar_value ] = gaussian_basis( x_vector, mu_vector) % x_vector 1 x 21 vector % mu_vector 1 x 21 vector scalar_value
function [ scalar_value ] = gaussian_basis( x_vector, mu_vector)
% x_vector 1 x 21 vector
% mu_vector 1 x 21 vector
scalar_value = exp(-((x_vector - mu_vector).^2/ 2 * .5^2));
下面是我正在使用的matlab代码
function [ scalar_value ] = gaussian_basis( x_vector, mu_vector)
% x_vector 1 x 21 vector
% mu_vector 1 x 21 vector
scalar_value = exp(-((x_vector - mu_vector).^2/ 2 * .5^2));
我不知道我错过了什么。正如我提到的,我不知道如何使这个返回值成为标量值。非常感谢您的帮助和指导。我想您缺少的是高斯基函数通常是在 而不是 如果这是正确的解释,那么您需要:
scalar_value = exp(-sum((x_vector - mu_vector).^2, 2)/ (2 * .5^2));
而不是
scalar_value = exp(-((x_vector - mu_vector).^2/ 2 * .5^2));
正如评论中所指出的,后者总是返回一个向量,因为你没有包含任何在第二维度上聚合的操作。也许我现在缺乏理论,但是如果你给出向量,它应该如何返回一个标量呢?操作
(x_向量-mu_向量)
是组件式的,因此您将收到21个标量值。是的,这就是我遇到的问题。从我看到的资源来看,它说,“每个基函数φj(x),j=0,…m− 1将输入向量x转换为标量值。“谢谢。对于任何给定的x值,您都将得到标量。对于一组值,也就是说,如果x是一个向量,你会得到一个向量……要么我遗漏了什么,要么你指定了错误的基函数。我不明白,在给定向量输入的情况下,基函数是如何给出标量的。