查看: 141|回复: 3|关注: 0

[已答复] 如何将两个三维曲面图结合在一起

[复制链接]

新手

5 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
发表于 2020-6-28 11:05:42 | 显示全部楼层 |阅读模式
clc;
clear;

NA=0.95;
n=1;
B=1;
amax=asin(NA/n);
nj=1;
xj=50;
kj=2*nj*pi/xj;
x0=-50;
y0=-50;
xmax=50;
ymax=50;
z=0;
b1=1;
for  x=x0:1:xmax
     c1=1;
   for   y=y0:1:ymax
       I0=0;
         I00=0;
   for    a=0:0.01:amax
         I=0;
         Ig=0;
     for      aa=0:pi/100:pi
             I=cos(aa-atan2(x,y))*exp(i*(kj*sqrt(x^2+y^2)*sin(a)*cos(aa-atan2(x,y))+pi));
             Ig=I+Ig;
     end   
   I0=-i*sqrt(cos(a))*sin(a)*exp(   -B^2  *  (  (sin(a)/sin(amax))^2  )   ) * besselj(1,  2*B*  (   sin(a)/sin(amax)  )  )*Ig*exp(i*kj*z*cos(a));
   I00=I0+I00;  
     end
  l(b1,c1)=real(I00)^2+imag(I00)^2;
            c1=c1+1;
   end
   b1=b1+1;  
end

b2=1;
    for  x=x0:1:xmax
     c2=1;
   for   y=y0:1:ymax
       I01=0;
            I001=0;
   for     a=0:0.1:amax
         I1=0;
         Ig1=0;
      for aa=pi:pi/100:2*pi
        I1=cos(aa-atan2(y,x))*exp(i*kj*sqrt(x^2+y^2)*sin(a)*cos(aa-atan2(y,x)));
     Ig1=I1+Ig1;

     end

      I01=-i*sqrt(cos(a))*sin(a)*exp(   -B^2  *  (  (sin(a)/sin(amax))^2  )   ) * besselj(1,  2*B*  (   sin(a)/sin(amax)  )  )*Ig1*exp(i*kj*z*cos(a));
           I001=I01+I001  ;      

   end
ll(b2,c2)=real(I001)^2+imag(I001)^2;
            c2=c2+1;

   end
  b2=b2+1;

    end

surf(l+ll);
colormap jet;
grid on;
axis off;
shading interp;

回复主题 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
 楼主| 发表于 2020-6-28 11:06:32 | 显示全部楼层
各位大神 ,帮一下忙
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

447 麦片

财富积分


50500


21

主题

260

帖子

53

最佳答案
  • 关注者: 7
发表于 2020-6-29 08:41:34 | 显示全部楼层
本帖最后由 15631202458 于 2020-6-29 08:44 编辑

你的代码可以跑出来,时间稍微久一点,你是啥需求呢,你不是surf(l+ll)了,具体需求没说明白啊
运算出来你的l大概是1e4,而ll是1e2,显然不在一个数量级,相加的话,基本上l的图像差不多
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

447 麦片

财富积分


50500


21

主题

260

帖子

53

最佳答案
  • 关注者: 7
发表于 2020-6-29 08:56:48 | 显示全部楼层
你看下效果,ll与l各自的图像具有相似性,但是ll数量级比l小,放到一起可以看出来ll的图像基本上是平的。所以你的需求到底是怎样的呢,没说清楚,你分别显示两个图呢,还是叠加到一块显示呢?


  1. %绘图部分代码
  2. surf(ll);
  3. colormap jet;
  4. hold on
  5. pause(3)
  6. surf(l);
  7. grid on;
  8. axis off;
  9. shading interp;
  10. view(-30,-15)
复制代码


新建位图图像.jpg
回复此楼 已获打赏: 0 积分

举报

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

本版积分规则

关闭

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

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