【问题标题】:Octave out of bound error while trying to calculate mean value of a vector尝试计算向量的平均值时的八度越界误差
【发布时间】:2021-06-12 06:56:05
【问题描述】:

我使用以下函数生成随机值:

 P = floor(6*rand(1,30)+1)

然后,使用T=find(P==5),我得到了结果为5 的值并将它们存储在T 中。输出是:

T =

   10   11   13   14   15   29

现在,我想使用mean(T) 计算T 的平均值,但它给了我以下错误:

error: mean(29): out of bound 1 (dimensions are 1x1) (note: variable 'mean' shadows function)

我想做的是模拟掷骰子的结果,并计算我第一次得到 5 的结果。然后我想取所有这些时间的平均值。

【问题讨论】:

  • note: variable 'mean' shadows function -- 你有一个函数和变量都命名为 mean -- 把变量名改成别的名字。

标签: octave probability stochastic-process octave-gui


【解决方案1】:

虽然你没有在你的问题中明确说明,但看​​起来你写的

mean = mean(T);

当我尝试这样做时,它在我第一次运行代码时有效,但第二次和随后的时间它给出了与您相同的错误。似乎正在发生的事情是,第一次运行脚本时,它会计算 T 的平均值,这是一个标量,即它的尺寸为 1x1,然后将其存储在一个名为 mean 的变量中,该变量也有尺寸 1x1。第二次运行它时,变量mean 仍然存在于环境中,因此Octave 不调用函数mean(),而是尝试使用向量T 作为索引来索引名为mean 的变量。变量mean只有一个元素,索引为1,所以T的第一个元素值不为1的元素越界。如果您将变量称为平均值以外的其他名称,例如mu

mu = mean(T);

那么它应该按预期工作。一个不太令人满意的解决方案是在脚本顶部写 clear all,这样变量 mean 仅在函数 mean() 被调用后创建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 2016-07-14
    • 1970-01-01
    相关资源
    最近更新 更多