【问题标题】:Matlab/Octave: Function with array and number as argument -> subscript errorMatlab / Octave:以数组和数字作为参数的函数->下标错误
【发布时间】:2014-03-14 15:37:42
【问题描述】:

由于默认情况下 Octave 似乎没有为 1D 或 2D 带来高斯函数,因此我尝试自己定义这些函数。

我从定义开始

function [result] = Gauss(x,[x0 sigma])
result = 1/(sqrt(2*pi*sigma^2))*exp(-1(x-x0)^2/2*sigma^2)
end

导致下标错误

error: subscript indices must be either positive integers or logicals

我尝试修改函数定义如下:

function [result] = Gauss(x,[x0 sigma])

我从 Matlab 中找到了一个函数 gaussmf,您可以在其中传递一个数组 x 和 x0 和 sigma 中的单个数字。不幸的是,我仍然收到订阅错误。

所以我的问题是:在这种情况下如何传递数组和其他非数组参数? 我认为这将是相当自动的,但似乎不是...... ;)

谢谢

【问题讨论】:

  • GNU Octave 对于一维情况有normpdf()。你不能那样定义函数。请阅读手册。

标签: arrays matlab function octave


【解决方案1】:

我怀疑错误来自:

exp(-1(x-x0)^2/2*sigma^2)

我怀疑你想要

exp(-(x-x0)^2/2*sigma^2)

相反。正如你所写的那样,你正试图用x-x0 索引1。事实上,如果x 是一个向量,你可能想要:

exp(-(x-x0).^2/2*sigma^2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-02
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多