Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 高斯基函数返回向量而不是标量_Matlab_Vector_Gaussian - Fatal编程技术网

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

我试图在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 = 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是一个向量,你会得到一个向量……要么我遗漏了什么,要么你指定了错误的基函数。我不明白,在给定向量输入的情况下,基函数是如何给出标量的。