迭代数组/向量Matlab

时间:2016-01-31 07:36:30

标签: matlab

首先,我必须道歉,因为我非常确定我只是犯了一个简单的错误。我正在使用MatLab创建我的第一个程序,并且已经阅读了相关文档,但仍然无法解决我的问题。

我正在尝试在MatLab中实现信息熵的等式(我确定它可能已经存在,但这不是重点),但我遇到了arrayfun的问题,因为它似乎是在没有参数的情况下调用entropySingle。

我在适当命名的文件中有以下功能

function y = entropySingle(x)
y = x * log2(x);
end

function y = entropy(x)
if ~isvector(x)
    error('Input must be a vector');
end 
x = arrayfun(entropySingle, x);
y = sum(x);
end

我正在调用entropy([1/3 1/4 1/6 1/8 1/12 1/24]).错误发生在entropySingle的第2行,但是为什么用空指针调用它?提前谢谢,

1 个答案:

答案 0 :(得分:1)

您需要使用element wise multiplication

y = x .* log2(x);

在乘法之前不使用那个小的.告诉matlab这是关于矩阵乘法而不是它。

另外,请勿使用名称entropy。你正在覆盖一个内置的matlab函数,这只会给你的代码和生活带来更多麻烦。