尝试计算向量的平均值时八度音程越界错误

问题描述

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

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

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

T =

   10   11   13   14   15   29

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

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

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

解决方法

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

mean = mean(T);

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

mu

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