我是Octave的初学者! 我正在努力弄清楚数组mse_array中的最小值。我不断收到错误说:“下标索引必须是小于2 ^ 31的正整数或逻辑”
有人可以帮助我吗?这是我的代码:
function randomLines(data1, data2)
mse_array = []
A = rand(2,10)*100
for i = columns(A)
max = A (1, i)
min = A (2, i)
m = (max-min)/0.16
p = [m min];
array_function_values = polyval(p,data2);
current_mse = mseFunction(data1,array_function_values);
mse_array(end + 1) = current_mse
endfor
min_value = min(mse_array)
endfunction
答案 0 :(得分:2)
您的代码有几个问题。以下是一些可以帮助您入门的内容。
错误可能发生在这一行:
min_value = min(mse_array)
您使用mse_array
作为min
的索引,但mse_array
中的值可能是错误状态的有效数组索引。 (我猜测这纯粹基于变量的名称mse_array
,它似乎来自某种形式的均方误差计算。)检查错误消息中的行号和其他所有内容非常重要。
另一个问题是你的for
循环只评估一次。 columns
函数将返回A
的标量列数。因此,你的循环声明等同于:
for i = 10
换句话说,代码只会查看A
的最后一列。您可能想要使用:
for i = 1:columns(A)
最后,使用您自己的变量名称覆盖Octave中的内置min
和max
函数是个坏主意。如果您覆盖内置的min
功能,在拨打clear min
之前,您将无法再直接使用它(或者,您可以拨打builtin
,但是您应该避免使用)。相反,只需选择更好的变量名称。
答案 1 :(得分:1)
octave
内置自我描述文档,可以怀疑使用一次
help min
和 doc min
octave-3.2.4.exe:1> help min
`min' is a function from the file C:\Octave\3.2.4_gcc-4.4.0\libexec\octave\3.2.4\oct\i686-pc-mingw32\max.oct
-- Loadable Function: min (X)
-- Loadable Function: min (X, Y)
-- Loadable Function: min (X, Y, DIM)
-- Loadable Function: [W, IW] = min (X)
For a vector argument, return the minimum value. For a matrix
argument, return the minimum value from each column, as a row
vector, or over the dimension DIM if defined. For two matrices
(or a matrix and scalar), return the pair-wise minimum. Thus,
min (min (X))
returns the smallest element of X, and
min (2:5, pi)
=> 2.0000 3.0000 3.1416 3.1416
compares each element of the range `2:5' with `pi', and returns a
row vector of the minimum values.
For complex arguments, the magnitude of the elements are used for
comparison.
If called with one input and two output arguments, `min' also
returns the first index of the minimum value(s). Thus,
[x, ix] = min ([1, 3, 0, 2, 0])
=> x = 0
ix = 3
See also: max, cummin, cummax
重新定义(因此渲染不可用)元素作为保留字只会增加麻烦。尝试使用您自己的命名约定,这不会损害系统的其他部分 - 即 anArrayMinimumVALUE
或 aSmallestVALUE
,而不是“查杀” “Octave函数 min()
通过创建一个偶然命名的变量”也“min