在matlab上计算零序的bessel函数

时间:2013-11-24 22:26:55

标签: matlab integral bessel-functions

J(x)= 1 /π积分cos(xsintheta)。限制从0到π。

将J(2pid /λ)绘制为MATLAB中d /λ的函数,d /λ介于其间 分离的距离(波长)是多少 天线0.7,0?

之间的相关性

当我定义syms theta并使用时,我不明白如何将它集成到matlab中 J_ =积分(J,0,PI);出现错误。第二,当我手动整合它时,答案显示为0.请帮助我。

2 个答案:

答案 0 :(得分:1)

除非你真的需要手动计算,否则你应该使用Matlab的内置besselj函数来计算第零阶Bessel function of the first kind

dlam = 0:0.01:2;
x = 2*pi*dlam;
y = besselj(0,x)
figure;
plot(x,y)

这将更快,更准确地执行正交。

如果您希望确定y0.70的点的高度准确性,而不是从绘图中读取它们,则可以使用符号数学与solvesym/besselj结合使用。假设这就是问题的这一部分(我对天线一无所知),你可以使用类似的东西:

syms x;
double(solve(besselj(0,x) == 0.7,x))

答案 1 :(得分:0)

integral命令不适用于syms,它适用于函数。对于符号集成,命令为int

我现在没有MATLAB来检查拼写错误等,但是这样的事情应该有效:

x = 0.1;
integral(@(theta) cos(x.*sin(theta)), 0, pi)/pi

甚至

bessel = @(x) integral(@(theta) cos(x.*sin(theta)), 0, pi)/pi;
bessel(0.1)