用零和系列值将系列分为两部分

时间:2018-09-11 19:23:07

标签: matlab

我在matlab的表中有以下内容

k   ak
0   1
1   -0.166666667
2   0.008333333
... ...

其中ak =(-1)^ k /(2k + 1)!但这并不是很重要,重要的是ak是k和(-1)^ k的函数。

我正在尝试生成一组新的列,如下所示

i   ai
0   1
1   0
2   -0.166666667
3   0
4   0.008333333
... ...

到目前为止,我已经知道,通过扩展索引(将2而不是1递增)并应用ak函数,它可以很接近我想要的值,但是它返回绝对值。

if mod(i,2)=0
  ai=(-1)^i/factorial(2*(i/2)+1);
else
    ai=0;
end

如何将其更改为我想要的?

1 个答案:

答案 0 :(得分:1)

您应该使用此:

ai = (-1)^(ii/2)/factorial(2*(ii/2)+1);
% Notice ----^

可以为您的if-else语句提供矢量输入,并单行写为:

ai = ~mod(ii,2) .* (-1).^(ii/2)./factorial(2*(ii/2)+1);
%I used ii instead of i since i is for imaginary numbers in MATLAB