问题描述
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
被调用后创建。