Почему моя функция Matlab не принимает массив?

#arrays #matlab #parameters #parameter-passing

#массивы #matlab #параметры #передача параметров

Вопрос:

У меня есть следующая функция:

 function [ res ] = F( n )
    t = 1.5;
    res = 0;
    if n <= 0
        return;
    end
    for i = 0:n-1
        res = res   power(-1,i)*power(t,2*i 1)/((2*i 1)*factorial(i));
    end 
end
  

Я пытаюсь передать ей массив, чтобы я мог видеть его выходные данные для каждой точки в массиве

 F([2,3,4])
  

По какой-то причине она отказывается работать со всем массивом, выдавая мне выходные данные только для первого элемента.
Почему это?

РЕДАКТИРОВАТЬ: если я изменю

 res = 0;
  

в начале для

 res = 0   n;
res = res - n;
  

Это работает для всего массива.

Ответ №1:

Проблема в том, что res не является массивом. Вы можете сделать что-то вроде этого:

 function res = F(n)
  t = 1.5;
  m = length(n);
  res = zeros(m, 1);
  for  j = 1 : m
    for i = 0 : n(j) - 1
      res(j) = res(j)   power(-1, i) * power(t, 2 * i   1) / ((2 * i   1) * factorial(i));
    end; 
  end;
end;
  

Результат для вашего примера векторного ввода:

 >> F([2,3,4])

ans =

   0.375000000000000
   1.134375000000000
   0.727566964285714