Почему моя функция Matlab не принимает массив? - PullRequest
0 голосов
/ 13 ноября 2011

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

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 Ответ

1 голос
/ 13 ноября 2011

Проблема в том, что 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
...