八度索引超出范围错误。不知道为什么
Octave index out of bound error. Can't figure out why
我是 Octave 的新手,对我遇到的这个错误感到很困惑。
我的函数 f 适用于 1 的 (7,1) 向量,但适用于任何其他向量
(7,1) vector 我试过我得到一个索引超出范围的错误
据我所知,工作输入和不工作输入之间的索引
应该是相同的,只是那些索引中的值发生了变化。
那么为什么会这样,我做错了什么?
这是我的代码:
function asd
f([1,1,1,1,1,1,1]) #works
f([2,1,1,1,1,1,1]) #out of bound,
#same for no matter which value I replace with a 2
x = ones(7,1)
f(x) #works
x(1) = 2
f(x) #out of bound
endfunction
function y = f(x)
y = ones(7,1);
y(1) = x(1) − x(2) − x(6);
y(2) = x(2) − x(3) − x(4);
y(3) = x(3) + x(4) − x(5);
y(4) = x(5) + x(6) − x(7);
y(5) = 200((x(3))^2) − 75((x(4))^2);
y(6) = 100((x(2))^2) + 75((x(4))^2) + 100((x(5))^2) − 75((x(6))^2);
y(7) = 100((x(1))^2) + 75((x(6))^2) + 50((x(7))^2) − 10.285;
endfunction
这是错误:
错误:索引 (4):越界 1
错误:调用自
asd>f 在第 20 行第 8 列
第 3 行第 3 列的 asd
您正在尝试索引数字 100,它是单个元素,因此只有索引 1
。
做 100(1) 等同于说 a = 100; a(1)
。
因此 100(2)
导致索引越界错误。
你想做什么?大概你是想乘法而不是索引?在这种情况下,你不能只有 100(something)
,你需要 100 * (something)
。
我是 Octave 的新手,对我遇到的这个错误感到很困惑。 我的函数 f 适用于 1 的 (7,1) 向量,但适用于任何其他向量 (7,1) vector 我试过我得到一个索引超出范围的错误
据我所知,工作输入和不工作输入之间的索引 应该是相同的,只是那些索引中的值发生了变化。 那么为什么会这样,我做错了什么?
这是我的代码:
function asd
f([1,1,1,1,1,1,1]) #works
f([2,1,1,1,1,1,1]) #out of bound,
#same for no matter which value I replace with a 2
x = ones(7,1)
f(x) #works
x(1) = 2
f(x) #out of bound
endfunction
function y = f(x)
y = ones(7,1);
y(1) = x(1) − x(2) − x(6);
y(2) = x(2) − x(3) − x(4);
y(3) = x(3) + x(4) − x(5);
y(4) = x(5) + x(6) − x(7);
y(5) = 200((x(3))^2) − 75((x(4))^2);
y(6) = 100((x(2))^2) + 75((x(4))^2) + 100((x(5))^2) − 75((x(6))^2);
y(7) = 100((x(1))^2) + 75((x(6))^2) + 50((x(7))^2) − 10.285;
endfunction
这是错误:
错误:索引 (4):越界 1
错误:调用自 asd>f 在第 20 行第 8 列 第 3 行第 3 列的 asd
您正在尝试索引数字 100,它是单个元素,因此只有索引 1
。
做 100(1) 等同于说 a = 100; a(1)
。
因此 100(2)
导致索引越界错误。
你想做什么?大概你是想乘法而不是索引?在这种情况下,你不能只有 100(something)
,你需要 100 * (something)
。