我在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
如何将其更改为我想要的?
答案 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