Индекс октавы вне связанной ошибки.Не могу понять, почему - PullRequest
0 голосов
/ 04 октября 2018

Я новичок в Octave и довольно смущен этой ошибкой, которую я получаю.Моя функция f работает для (7,1) вектора единиц, но для любого другого (7,1) вектора, который я пробовал, я получаю индекс из-за связанной ошибки

Насколько мне известно, индексирование между рабочимивходной и неработающий должны совпадать, меняются только значения в этих индексах.Так почему же это происходит, что я делаю не так?

Вот мой код:

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 asd в строке 3 столбца 3

1 Ответ

0 голосов
/ 04 октября 2018

Вы пытаетесь проиндексировать число 100, которое является единственным элементом, поэтому имеет только индекс 1.

Выполнение 100 (1) эквивалентно высказыванию a = 100; a(1).

* 1006.* Следовательно, выполнение 100(2) приводит к ошибке индекса вне границ.

Что вы пытаетесь сделать?Предположительно, вы пытались умножить вместо индексации?В этом случае вы не можете просто получить 100(something), вам нужно 100 * (something).

...