就是有一组数x,用for循环写出如图的这种式子,带入进去
其中I0(0.5)和In(0.5)是第一类修正贝塞尔函数,可以直接用matlab命令写,分别为besseli(0,0.5),besseli(n,0.5)
我先用syms命令写了个出来,但是计算的特别慢,就想着直接用for循环写
这是syms的程序,如果只带几个数进去能算出来,但是x的数量一多就卡主
X = xlsread('fengxiang.xlsx'); %X是一组0-360度的列向量,有2万个数左右
n=1:1000 %累加到1000就差不多够了
syms x
F(x)=(x*besseli(0,0.5)+2*sum(besseli(n',0.5).*sind(n'.*(x-260))./n'))./(2*pi*besseli(0,0.5))
double(F(X))
所以思考直接用for循环写,这里就不知道哪里出问题了,for循环计算的挺快的,但是算出来把F(x)直接求和了,前面全是0,最后一个是很大的数字
X = xlsread('fengxiang.xlsx'); %X是一组0-360度的列向量
n0=length(X)
n=1:1000
for i=n0
F(i)=(X(i)*besseli(0,0.5)+2*sum(besseli(n',0.5).*sind(n'.*(X(i)-260))./n'))./(2*pi*besseli(0,0.5))
end