Не могу понять мою синтаксическую ошибку в скрипте Octave

Я не понимаю, почему появляется эта ошибка, и я жарил свой мозг, но не могу ее найти. Ошибка гласит: subscript indices must be either positive integers less than 2^31 or logicals вызывается из строки 51 столбца 12, я отмечу это в коде ниже.

Я не понимаю, почему мой код интерпретирует то, что я использую xintv4 как нижний индекс. f2 это функция, и я вызываю ее, чтобы оценить набор значений х...

f2 =@(x) x.^2 .* e.^(-x).*sin(pi.*x);

a4 = -1;
    b4 = 1;
    c4 = 0.84685; 

    for N4 = [10]#, 100, 1000, 10000]

      disp("");

      B = 1;            

      for p4 = 1:2

        xintv4 = rand(1,N4)*2-1;
        yintv4 = rand(1,N4)+c4;
        f2 = f2(xintv4)+c4; #error points to this line at the "=" sign
        nf4 = 0;
        nf4count = 0;   
        nf4 = f2./yintv4;          

        for k = 1:N4

                if nf4(k) >= 1

                  nf4count += 1;

                else

                  nf4count += 0;

                end                   

        endfor

        #disp("nf:");disp(nf);
        #disp("nfcount:");disp(nfcount);

        I4(p4) = ((B+c4)*(b4-a4)*(nf4count/N4))-(c4*(b4-a4));           

      endfor

      meanI4 = mean(I4);
      stdevI4 = std(I4);

      disp("N = "); disp(N4);
      disp("Mean of the integral using method 2:");disp(meanI4); 
      disp("Standard deviation of the integral using method 2:");disp(stdevI4);       

    endfor

Я пытался поиграть с for p4 = 1:2 изменив его на for p4 = 1 и это сработало, но я ломаюсь, когда увеличиваю цикл до 2,3 или 4 (и т. д.).

Добавлен тег MATLAB, потому что они являются похожими языками.

1 ответ

Решение
f2 = f2(xintv4)+c4;

Вы назначаете возвращаемое значение анонимной функции f2 к переменной f2, Второй раз, f2 больше не является именем функции.

Другие вопросы по тегам