查看: 260|回复: 4|关注: 0

[已解决] 光强公式编程 出图

[复制链接]

新手

7 麦片

财富积分


050


3

主题

10

帖子

0

最佳答案
最近看了一篇文档,想对光强公式进行编程出图,公式如下,其中k :波数已知,f:焦距已知;积分下限a:已知;变量为rp和∅p,本人matlab小白,求下编写公式的代码,公式如下: 光强公式.PNG
回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

入门

203 麦片

财富积分


50500


0

主题

471

帖子

41

最佳答案
  • 关注者: 12
发表于 2020-9-8 22:48:42 | 显示全部楼层
把文献和数据具体发出来,或许可以帮到你
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


3

主题

10

帖子

0

最佳答案
 楼主| 发表于 2020-9-9 16:22:53 | 显示全部楼层
wjb986555360 发表于 2020-9-8 22:48
把文献和数据具体发出来,或许可以帮到你

数值情况如下:看下我编的程序,出错了
clear all;
k=10;
f=1004.8;
x=-1.5:0.05:1.5;
y=-1.5:0.05:1.5;
[x1,y1]=meshgrid(x,y);
r=sqrt(x1.^2+y1.^2);
Phi=y1./x1;
I=(i*k*exp(i*(pi/2+k*f)).*sin(2*Phi+(Phi==0)*eps).*quadl(@(theta)(1+cos(theta))/(1-cos(theta)).*sin(theta).*Besselk(2,k.*r.*sin(theta)),2.23,pi)).^2;
subplot(2,1,1);
mesh(x1,y1,I);
axis([-1.5 1.5 -1.5 1.5 0 1]);
subplot(2,1,2);
subimage(I*255);
axis off;
出错提示:
formula
矩阵维度必须一致。

出错 formula>@(theta)(1+cos(theta))/(1-cos(theta)).*sin(theta).*Besselk(2,k.*r.*sin(theta))

出错 quadl (line 62)
y = feval(f,x,varargin{:}); y = y(:).';

出错 formula (line 9)
I=(i*k*exp(i*(pi/2+k*f)).*sin(2*Phi+(Phi==0)*eps).*quadl(@(theta)(1+cos(theta))/(1-cos(theta)).*sin(theta).*Besselk(2,k.*r.*sin(theta)),2.23,pi)).^2;
回复此楼 已获打赏: 0 积分

举报

新手

46 麦片

财富积分


050


6

主题

145

帖子

8

最佳答案
QQ
  • 关注者: 3
发表于 2020-9-9 20:09:36 | 显示全部楼层 |此回复为最佳答案

将I表达式,改用for循环语句来求。即

for m=1:K
    for n=1:L
        Phi=(y1(n)./x1(m));
        r0=r(m,n);
        eq=quad(@(theta)(1+cos(theta))./(1-cos(theta)).*sin(theta).*besselk(2,k.*r0.*sin(theta)),2.23,pi);
        I0=(abs(i*k*exp(i*(pi/2+k*f))/4*sin(2*Phi)*eq))^2;
        I(m,n)=I0;
    end
end




123.jpg
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


3

主题

10

帖子

0

最佳答案
 楼主| 发表于 2020-9-11 11:35:03 | 显示全部楼层
hzlhm 发表于 2020-9-9 20:09
将I表达式,改用for循环语句来求。即
for m=1:K
    for n=1

刚我按照你给的for 循环运行了下,发现还是出错了,你能把代码给我发出来运行下吗?
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表