基于Matlab的跨孔电磁波\跨孔雷达的胖射线追踪(一)

基于Matlab的跨孔电磁波\跨孔雷达CT的胖射线追踪(一)

CT技术是一种无损的工程物探检测技术,因其方法简单、分辨率高、理论上更可靠、结果更直观,被广泛的应用于各种工程。胖射线追踪是CT技术的一种正演算法,本文的代码和示意图,供学习借鉴。1

文章目录

  • 基于Matlab的跨孔电磁波\跨孔雷达CT的胖射线追踪(一)
    • 胖射线追踪示意图
    • MATLAB代码
    • 胖射线追踪的原理

胖射线追踪示意图

用动画显示胖射线追踪的过程。
基于Matlab的跨孔电磁波\跨孔雷达的胖射线追踪(一)_第1张图片

MATLAB代码

为了生成上述动图,编写了如下matlab代码:

clear 
close all
clc

xmin = 0;
xmax = 20;
zmin = 0;
zmax = 30;

dx = 1;
dz = 1;

lamda = 1;
[xx,zz] = meshgrid(xmin:dx:xmax,zmin:dz:zmax);

plot(xx,zz,'k:',xx',zz','k:');hold on
set(gca,'ydir','reverse');
xlabel('\fontname{times new roman}\bf\itDistance (m)');
ylabel('\fontname{times new roman}\bf\itDepth (m)');
set(gca,'FontSize',12);
axis([xmin-5.5 xmax+12 zmin-1 zmax+1]);
% axis equal

xx1 = 0;
zz1 = 1.5;
xx2 = 20;
zz2 = 1.5;
p1 = plot([xx1,xx2],[zz1,zz2],'b-');hold on
p2 = plot(xx1,zz1,'r*');
p3 = plot(xx2,zz2,'rs');
legend([p1,p2,p3],{'\fontname{times new roman}\bf\itRay',...
    '\fontname{times new roman}\bf\itTransmit',...
    '\fontname{times new roman}\bf\itReceive'},'Location','best');
legend('AutoUpdate','off');
for i = 1:10
    x1 = 0;
    y1 = 1.5+(i-1)*3*dx;
    x2 = 20;
    for j = 1:10
        y2 = 1.5+(j-1)*3*dz;
        
        clear R
        R = sqrt((x1-x2)^2 + (y1-y2)^2);
        
        c = R/2 ;
        b = sqrt(lamda*R/4); 
        a = sqrt(c^2 + b^2); 
        theta = atan((y2-y1)/(x2-x1)); 
        x0 = (x1+x2)/2; 
        y0 = (y1+y2)/2;
          
        syms x y;

        f2 = (a^2-c^2*cos(theta)^2)*(x-x0).^2 + ...
             (a^2-c^2*sin(theta)^2)*(y-y0).^2 - ...
             c^2*sin(2*theta)*(x-x0).*(y-y0) - a^2*b^2;

        h = fimplicit(f2,[xmin-2*dx,xmax+2*dx,zmin-b,zmax+b]);
        set(h,'Color','b','LineStyle','-')
       

        plot([x1,x2],[y1,y2],'b-');hold on
        plot(x1,y1,'r*');
        plot(x2,y2,'rs');
        if i == 1
            clear str
            str = [num2str(j),'.png'];
            print(str,'-dpng');
        pause(.1)
        end
    end
    clear str
    str = [num2str(10+i),'.png'];
    print(str,'-dpng'); 
end

胖射线追踪的原理

胖射线追踪是一个抽象概念,具体公式原理可查阅相关资料,相较于直射线追踪,胖射线追踪在理论上更接近电磁波传播的物理本质。


  1. 本文仅供学习交流。 ↩︎

你可能感兴趣的:(matlab,编程语言,算法,矩阵,线性代数)