数学建模社区-数学中国

标题: 【MATLAB动画教程十二】 [打印本页]

作者: 士心之约    时间: 2015-9-23 09:40
标题: 【MATLAB动画教程十二】
  1. %Fraunhofer Diffraction of a Round Hole
  2. %弗朗和费衍射模拟Matlab源代码
  3. %rewrite by dynamic
  4. %all rights reserved by www.matlabsky.cn
  5. %2008.12.3
  6. close all
  7. figure('numbertitle','off','name','弗朗和费衍射模拟--by Matlabsky',...
  8. 'toolbar','none','position',[217 266 694 244]);
  9. axes('position',[0.05,0.08,0.6,0.8]);hold on;
  10. title('Fraunhofer Diffraction of a Round Hole',...
  11. 'fontsize',14)
  12. set(gcf,'doublebuffer','on');
  13. axis([-4,12,-5,5]);
  14. rectangle('position',[0,1,0.2,3],'FaceColor',[0.1,0.3,0.4]);
  15. rectangle('position',[0,-4,0.2,3],'FaceColor',[0.1,0.3,0.4]);
  16. rectangle('position',[3.8,-4,0.4,8],'FaceColor',...
  17. [0.4,0.3,0.4],'Curvature',[1,1]);
  18. rectangle('position',[11,-5,0.4,10],'FaceColor',[0.1,0.3,0.4]);
  19. h1=plot([-4,-4],[-0.7,-0.7]);
  20. h2=plot([-4,-4],[0,0]);
  21. h3=plot([-4,-4],[0.7,0.7]);
  22. for k=-4:.1:0;
  23. pause(0.05);
  24. try
  25. set([h1,h2,h3],'xdata',[-4,k]);
  26. catch
  27. return
  28. end
  29. end
  30. y=-4:.1:4;
  31. a=linspace(-atan(4/11),atan(4/11),length(y));
  32. a=10*sin(a);
  33. II=abs(sinc(a)).^2*6;
  34. x=11-II;
  35. plot(x,y,'r')
  36. K=find(diff(sign(diff(II)))==-2)+1;
  37. yyN=y(K);
  38. P=zeros(3,5); yN=[-0.7,0,0.7];H=P;
  39. for m=1:3;
  40. for n=1:5;
  41. P(m,n)=complex(p(1),p(2));
  42. H(m,n)=plot(0,yN(m));
  43. end
  44. end
  45. for Q=0:.1:11;
  46. pause(0.05)
  47. for w=1:15;
  48. [m,n]=ind2sub([3,5],w);
  49. Y=polyval([real(P(w)),imag(P(w))],Q);
  50. try
  51. set(H(w),'xdata',[0,Q],'ydata',[yN(m),Y]);
  52. catch
  53. return
  54. end
  55. end
  56. end
  57. axes('position',[0.65,0.08,0.3,0.8])
  58. a=linspace(-atan(4/11),atan(4/11),300);
  59. [X,Y]=meshgrid(a);
  60. r=sqrt(X.^2+Y.^2);
  61. R=10*sin(r);
  62. II=abs(sinc(R)).^2*6;
  63. imshow(II);
复制代码


作者: 森之张卫东    时间: 2015-9-23 22:49
运行不了!!!!

问题.JPG (145.38 KB, 下载次数: 166)

问题.JPG


作者: 士心之约    时间: 2015-9-24 08:39
森之张卫东 发表于 2015-9-23 22:49
运行不了!!!!
  1. %Fraunhofer Diffraction of a Round Hole
  2. %弗朗和费衍射模拟Matlab源代码
  3. %rewrite by dynamic
  4. %all rights reserved by www.matlabsky.cn
  5. %2008.12.3

  6. close all
  7. figure('numbertitle','off','name','弗朗和费衍射模拟--by Matlabsky','toolbar','none','position',[217 266 694 244]);
  8. axes('position',[0.05,0.08,0.6,0.8]);hold on;
  9. title('Fraunhofer Diffraction of a Round Hole',...
  10.    'fontsize',14)
  11. set(gcf,'doublebuffer','on');
  12. axis([-4,12,-5,5]);
  13. rectangle('position',[0,1,0.2,3],'FaceColor',[0.1,0.3,0.4]);
  14. rectangle('position',[0,-4,0.2,3],'FaceColor',[0.1,0.3,0.4]);
  15. rectangle('position',[3.8,-4,0.4,8],'FaceColor',...
  16.    [0.4,0.3,0.4],'Curvature',[1,1]);
  17. rectangle('position',[11,-5,0.4,10],'FaceColor',[0.1,0.3,0.4]);
  18. h1=plot([-4,-4],[-0.7,-0.7]);
  19. h2=plot([-4,-4],[0,0]);
  20. h3=plot([-4,-4],[0.7,0.7]);
  21. for k=-4:.1:0;
  22.    pause(0.05);
  23.    try
  24.        set([h1,h2,h3],'xdata',[-4,k]);
  25.    catch
  26.        return
  27.    end
  28. end
  29. y=-4:.1:4;
  30. a=linspace(-atan(4/11),atan(4/11),length(y));
  31. a=10*sin(a);
  32. II=abs(sinc(a)).^2*6;
  33. x=11-II;
  34. plot(x,y,'r')
  35. K=find(diff(sign(diff(II)))==-2)+1;
  36. yyN=y(K);
  37. P=zeros(3,5); yN=[-0.7,0,0.7];H=P;
  38. for m=1:3;
  39.    for n=1:5;
  40.        p=polyfit([0,11],[yN(m),yyN(n)],1);
  41.        P(m,n)=complex(p(1),p(2));
  42.        H(m,n)=plot(0,yN(m));
  43.    end
  44. end
  45. for Q=0:.1:11;
  46.    pause(0.05)
  47.    for w=1:15;
  48.        [m,n]=ind2sub([3,5],w);
  49.        Y=polyval([real(P(w)),imag(P(w))],Q);
  50.        try
  51.            set(H(w),'xdata',[0,Q],'ydata',[yN(m),Y]);
  52.        catch
  53.            return
  54.        end
  55.    end
  56. end
  57. axes('position',[0.65,0.08,0.3,0.8])
  58. a=linspace(-atan(4/11),atan(4/11),300);
  59. [X,Y]=meshgrid(a);
  60. r=sqrt(X.^2+Y.^2);
  61. R=10*sin(r);
  62. II=abs(sinc(R)).^2*6;
  63. imshow(II);
复制代码






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5