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

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

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

文章目录

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

直射线追踪示意图

用动画显示直射线追踪的过程。

MATLAB代码

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

clear 
close all
clc

xmin = 0;
xmax = 20;
zmin = 0;
zmax = 30;
dx = 1;
dz = 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+10 zmin-1 zmax+1]);
% axis equal
xx1 = 0;
zz1 = 0.5;
xx2 = 20;
zz2 = 0.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'});
legend('AutoUpdate','off');
for i = 1:30
    x1 = 0;
    z1 = 0.5+(i-1)*dx;
    x2 = 20;
    for j = 1:30
        z2 = 0.5+(j-1)*dz;

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

直射线追踪的原理

关于直射线追踪的原理,可以查阅相关文献,都有具体的介绍,也可关注我后续发布的文章。


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

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