阶数不为整的MarcumQ函数matlab实现

研一通信新入门,研究课题为RIS的信道建模,最近遇到个小问题想请教广大网友,当广义Marcum Q函数的阶数为分数时如何用matlab实现呢,在matlab中已找到Marcumq函数,但仅当m为正整数时才适用。欢迎碰到过相同问题的朋友来交流。

img

你可以根据定义按照一定要求自己写一个(然后可以对比一下)

Q1 = marcumq(1,0,1)
Q2 = mymarcumq(1,0,1)
function Q = mymarcumq(a,b,m)
f = @(a,b,m,x) 1/a^(m-1)*x.^m.*exp(-(x.^2+a^2)/2).*besseli(m-1,a*x);
Q = integral(@(x)f(a,b,m,x), b, 100*b+100);% 设置一个小的值
end

比如这个mymarcumq函数
结果:

Q1 =

     1


Q2 =

   1.000000000000000

看着就很nice
同时你也可以看看分数阶数

Q2 = mymarcumq(1,1,1/2)

结果:

Q2 =

   0.522750131948112