精华内容
下载资源
问答
  • 该代码将CST电磁仿真软件中的场监视器计算结果以ACSII码导出,在MATLAB中可绘制场分布幅值和相位图,在此基础上可实现自由后处理操作,以进一步分析电磁器件中场分布原理。
  • matlab流场可视化后处理

    万次阅读 多人点赞 2019-03-12 13:41:37
    matlab流场可视化后处理1流体中标量的可视化1.1 云图1.2 切片图绘制1.3 三维等值面图绘制2流体中矢量的可视化2.1 箭头图或速度图2.2 流线图2.4 带节点的流线图2.5流管图和流带图2.6 圆锥体图2.7 粒子动画图3 参考...

    2020.04.01 更新,添加了对新文章的引用
    2021.04 更新,添加了Volume Viewer APP的介绍。把网址改成了超链接形式。

    1流体中标量的可视化

    流体力学中常见的标量为位置、速度绝对值、压强等。

    1.1 云图

    常用的云图绘制有pcolor、image、imagesc、imshow、contourf等函数。
    这里利用matlab自带的wind数据作为演示案例,显示二维云图的速度场。

    close all
    load wind
    x2=x(:,:,5);y2=y(:,:,5);u2=u(:,:,5);v2=v(:,:,5);
    %速度云图
    figure()
    pcolor(x2,y2,sqrt(u2.^2+v2.^2))
    shading interp%插值绘制颜色
    

    绘制结果如下:
    在这里插入图片描述

    1.2 切片图绘制

    切片图常用于可视化复杂的三维流动。
    由于二维计算机屏幕和二维视网膜的限制,人类对垂直于眼球面的速度分量不是很敏感,所以绘制三维可视化的时候一定要注意光照、视角、明暗、反光等信息,辅助人去补全第三维度的信息。

    常用的切片显示函数有contourslice和slice,对应二维的contour和pcolor用法。
    下面以流场的涡量切片图为例,介绍切片图的用法。

    close all
    load wind
    %涡量切片图绘制
    %构建颜色图
    mycmp=[[ones(20,1),(0.05:0.05:1)',(0.05:0.05:1)'];[(1:-0.05:0.05)',(1:-0.05:0.05)',ones(20,1)]];
    cav = curl(x,y,z,u,v,w); %计算旋度
    h = slice(x,y,z,cav,[90 134],59,0); %切片
    shading interp
    daspect([1 1 1]); %坐标轴缩放
    axis tight
    colormap(mycmp);
    caxis([-5,5]) %确定颜色范围,使得颜色图中白色对应0涡量
    camlight %设置光照
    set([h(1),h(2)],'ambientstrength',.6); %调整局部亮度
    

    在这里插入图片描述
    关于切片的更多方法,可以参见matlab的教程:
    Exploring Volumes with Slice Planes利用切片平面探索三维体

    1.3 三维等值面图绘制

    等值面相关的常用函数有:patch、isosurface、isocaps、isocolors、isonormals、reducevolume、subvolume等。
    下面以绘制三维速度等值面为例,介绍等值面的用法。

    close all
    clear
    load wind
    
    figure
    wind_speed = sqrt(u.^2 + v.^2 + w.^2);%速度
    %绘制等值面
    hiso = patch(isosurface(x,y,z,wind_speed,40));
    isonormals(x,y,z,wind_speed,hiso) %平滑
    hiso.FaceColor = 'red'; %等值面上色
    hiso.EdgeColor = 'none';
    %绘制断面
    hcap = patch(isocaps(x,y,z,wind_speed,40),...
       'FaceColor','interp', 'EdgeColor','none');
    colormap hsv
    %调整图片视角光源等
    axis tight 
    set(gca,'BoxStyle','full','Box','on')
    camproj perspective
    %camzoom(1.25)
    view(65,30)
    camlight(-45,45)
    hcap.AmbientStrength = 1;
    lighting gouraud
    daspect([1 1 1]);
    

    在这里插入图片描述

    2流体中矢量的可视化

    流体中常见的矢量有速度矢量、旋度矢量、梯度矢量等。

    2.1 箭头图或速度图

    matlab常用的速度图函数为quiver和quiver3。

    quiver为二维矢量图绘制,用法如下图所示。如果绘制箭头太密集,可以采用间隔采样的方式绘制。

    load wind
    figure()
    x2=x(:,:,5);y2=y(:,:,5);u2=u(:,:,5);v2=v(:,:,5);
    Q=quiver(x2,y2,u2,v2);%详见帮助文档quiver
    Q.AutoScaleFactor=1.2;%更改箭头比例,详见帮助文档Quiver Properties
    

    输出结果如下
    在这里插入图片描述
    quiver3为3维矢量场的绘制。可视化效果不如coneplot函数的圆锥图。
    推荐搭配空间曲面的使用。参见quiver3帮助文档。https://ww2.mathworks.cn/help/matlab/ref/quiver3.html

    load wind
    quiver3(x([5 10],:,:),y([5 10],:,:),z([5 10],:,:),u([5 10],:,:),v([5 10],:,:),w([5 10],:,:))%quiver3
    

    在这里插入图片描述

    2.2 流线图

    matlab中绘制流线常用的函数有:streamline、streamslice、stream2、stream3、interpstreamspeed。

    matlab中标准的流线图streamline需要知道流场的起始点,但通常对于复杂流场,起始点没有规律。而且二维流场streamline也不会显示流场方向。

    一种解决方法为随机在空间中散布一些点,然后以这些点为起点正向反向同时绘制流线。

    matlab中的streamline用法:

    load wind
    x2=x(:,:,5);y2=y(:,:,5);u2=u(:,:,5);v2=v(:,:,5);
    hold on
    startx=73*ones(1,6);starty=20:5:45;%定义流线起点
    streamline(x2,y2,u2,v2,startx,starty)
    quiver(x2(1:3:end,1:3:end),y2(1:3:end,1:3:end),u2(1:3:end,1:3:end),v2(1:3:end,1:3:end),'color','r')
    hold off
    

    结果如下所示
    在这里插入图片描述
    双向随机绘图:

    load wind
    figure()
    N=30; %随机点的数量
    x2=x(:,:,5);y2=y(:,:,5);u2=u(:,:,5);v2=v(:,:,5);
    maxx=max(x,[],'all');minx=min(x,[],'all');
    maxy=max(y,[],'all');miny=min(y,[],'all');%最大值最小值
    startx=rand(N,1)*(maxx-minx)+minx;
    starty=rand(N,1)*(maxy-miny)+miny;%生成随机点
    XY1 = stream2(x2,y2,u2,v2,startx,starty);%正向流线计算
    XY2 = stream2(x2,y2,-u2,-v2,startx,starty);%反向流线计算
    hold on
    for j=1:N
    	%绘制流线
        plot([flipud(XY2{j}(:,1));XY1{j}(:,1)],[flipud(XY2{j}(:,2));XY1{j}(:,2)],'-k')
    end
    quiver(x,y,u,v)
    hold off
    

    在这里插入图片描述
    如果流场可以用具体的流函数表示出来,则可以利用等值线的方式绘制:

    %等势面方法
    [x2,y2]=meshgrid(-5:0.1:5,-5:0.1:5);
    P=x2.^2-y2.^2;Q=2*x2.*y2;
    [u2,v2]=gradient(P);u2=-u2;v2=-v2;%势函数全部是负号
    max(abs(curl(x2,y2,u2,v2)),[],'all');
    figure
    hold on
    pcolor(x2,y2,P)%势函数
    shading interp
    quiver(x2(1:8:end,1:8:end),y2(1:8:end,1:8:end),u2(1:8:end,1:8:end),v2(1:8:end,1:8:end),'color','r')
    contour(x2,y2,Q,'LineColor','k','LineWidth',1.5,'LevelList',linspace(-50,50,20))
    caxis([-25,25])
    hold off
    

    在这里插入图片描述
    对于3维流场的流线图,推荐用streamslice绘制。
    https://ww2.mathworks.cn/help/matlab/ref/streamslice.html
    在这里插入图片描述
    streamslice的优点是可以很好的反应出方向和中断,这里就不做过多说明了。
    在这里插入图片描述

    对如何绘制流线或向量场感兴趣的,可以参见我的另一篇文章:
    利用matlab绘制二维均匀流线和向量场(向量场彩色箭头,颜色随变量变化)
    在这里插入图片描述

    2.4 带节点的流线图

    matlab中带节点的流线图函数为interpstreamspeed()。它在每条流线上添加了一定的节点,单根流线上的节点密集代表流速慢,节点稀疏代表流速快。
    这个函数直接看interpstreamspeed的帮助文档就行了,可视化效果不是很美观。
    在这里插入图片描述

    2.5流管图和流带图

    matlab中的流管图和流带图函数为streamtube和streamribbon,可以同时反映流场的方向、的、散度、旋度信息。

    下图为流管图示意图:

    load wind%[x,y,z,v]=flow();
    [sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
    
    verts = stream3(x,y,z,u,v,w,sx,sy,sz);
    div = divergence(x,y,z,u,v,w);
    htubes=streamtube(verts,x,y,z,-div);%以上3行可以用streamtube(x,y,z,u,v,w,sx,sy,sz);代替
    
    set(htubes,'EdgeColor','none','AmbientStrength',.5)
    shading interp%彩色
    
    view(3);
    axis tight
    camlight 
    lighting gouraud
    

    绘制结果如下:
    在这里插入图片描述
    其中流管的粗细代表散度的变化,流管的方向代表流线的变化。

    流带图的绘制如下所示:

    figure()
    load wind
    [sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
    verts = stream3(x,y,z,u,v,w,sx,sy,sz);
    cav = curl(x,y,z,u,v,w);%旋度
    spd = sqrt(u.^2 + v.^2 + w.^2).*.1;%速度
    streamribbon(verts,x,y,z,cav,spd);
    axis tight
    shading interp
    view(3);
    camlight; 
    lighting gouraud
    

    绘制结果如下:
    在这里插入图片描述
    除了方向和散度,流带的扭转还能表示旋度的变化。

    此外matlab官方还有一副很酷炫的流带图,我也摘了过来:
    在这里插入图片描述

    2.6 圆锥体图

    在三维向量场中以圆锥体形式绘制速度向量,由于其立体感比quiver3更好,所以更常用于三维流场。函数为coneplot。

    clear
    close all
    load wind
    xmin = min(x(:));
    xmax = max(x(:));
    ymin = min(y(:));
    ymax = max(y(:));
    zmin = min(z(:));%确定最大最小值
    xrange = linspace(xmin,xmax,8);
    yrange = linspace(ymin,ymax,8);
    zrange = 3:4:15;
    [cx,cy,cz] = meshgrid(xrange,yrange,zrange);绘制点的坐标位置
    
    figure
    hcone = coneplot(x,y,z,u,v,w,cx,cy,cz,5);
    hcone.FaceColor = 'red';
    hcone.EdgeColor = 'none';
    
    view(30,40)
    daspect([2,2,1])
    camlight right
    lighting gouraud
    hcone.DiffuseStrength = 0.8;
    

    效果如下:
    在这里插入图片描述

    2.7 粒子动画图

    streamparticles函数可以绘制流粒子,即定常流场的迹线动画。
    缺点是不能输出gif动图,不能显示非定常流场,如果想专门做这块的话建议自己编程。

    load wind
    figure
    daspect([1,1,1]); 
    view(2)
    [verts,averts] = streamslice(x,y,z,u,v,w,[],[],[5]); 
    sl = streamline([verts averts]);
    axis tight manual off;
    ax = gca;
    ax.Position = [0,0,1,1];
    %set(sl,'Visible','off')
    iverts = interpstreamspeed(x,y,z,u,v,w,verts,.05);
    zlim([4.9,5.1]);
    streamparticles(iverts, 200, 'Animate',15,'FrameRate',40, ...
        'MarkerSize',10,'MarkerFaceColor',[0 .5 0])
    

    输出粒子在某一时刻的截图如下:
    在这里插入图片描述

    2.8 Volume Viewer APP

    最近看到了一个App,在matlab菜单栏的App里面,叫做Volume Viewer。看起来很有意思,用一个小的GUI形式,提供了三维数据的查看方式。

    里面可以进行颜色映射、颜色透明度映射等修改。可以自定义切片。数据导入支持从已有的mat文件或者已有的变量导入。

    在这里插入图片描述
    在这里插入图片描述
    如果只是快速查看三维数据的话,这种拖拖拽拽点点点就能看的感觉还是挺方便的。

    3 参考链接

    https://ww2.mathworks.cn/help/matlab/volume-visualization.html
    或 搜索matlab的Volume Visualization文档

    展开全文
  • 并且计算求解完毕,如何应用matlab对模型求解结果进行后处理 展示呢? 右键导出->数据,点击数据1进行设置,表达式->替换表达式,选择mf.normB 设置文件输出路径,计算点:格点,数据格式:电子表格,设置格...

    我这里仿真的是“8”形载流线圈的磁场分布,假如模型已经建立好,

    并且计算求解完毕,如何应用matlab对模型求解结果进行后处理

    展示呢?

    • 右键导出->数据,点击数据1进行设置,表达式->替换表达式,选择mf.normB

    设置文件输出路径,计算点:格点数据格式:电子表格,设置格点范围,如

    x:range(-0.4,0.025,0.4),y:range(-0.4,0.025,0.4),z:range(-0.4,0.025,0.4)

    • 高级:勾选排序
    • 设置完毕,点击导出,接下来用matlab对导出的数据进行后处理展示
    • 将导出.csv格式文件更改为.xls,直接上matlab代码
    x = -0.4:0.025:0.4; %设置网格范围
    y = x; z = x;
    x_size = size(x,2);
    y_size = x_size;
    z_size = x_size;
    
    data_path = 'D:\mfB.xls';
    num = xlsread(data_path);   %读取数据表格
    count_num = 1;
    value = zeros(x_size,y_size,z_size);
    for i = 1:x_size
        for j = 1:y_size
            for k = 1:z_size
                value(i,j,k) = num(count_num,4);    %按照矩阵顺序存储磁通密度模值
                count_num = count_num + 1;
            end
        end
    end
    
    figure(1);
    surfc(x,y,squeeze(value(:,:,19)));  %z=0.05m平面
    xlabel('y/m');
    ylabel('x/m');
    zlabel('B/T');
    title('z=0.05m平面');
    colorbar
    
    figure(2);
    surfc(x,y,squeeze(value(:,:,25)));  %z=0.2m平面
    xlabel('y/m');
    ylabel('x/m');
    zlabel('B/T');
    title('z=0.2m平面');
    colorbar
    
    figure(3);
    surfc(x,y,squeeze(value(:,:,33)));  %z=0.2m平面
    xlabel('y/m');
    ylabel('x/m');
    zlabel('B/T');
    title('z=0.4m平面');
    colorbar
    • 结果展示

     

    展开全文
  • matlab后处理保存avi动画

    千次阅读 2017-01-19 13:05:40
    有时候需要在后处理时,将图片一张张合成视频,下面介绍一种简单的方法:... aviobj=VideoWriter('example.avi');%新建叫example.avi的文件 open(aviobj); %打开 for i=1:n ... %省略画图代码 currFrame = getframe;...

    有时候需要在后处理时,将图片一张张合成视频,下面介绍一种简单的方法:

    ...
    aviobj=VideoWriter('example.avi');%新建叫example.avi的文件
    open(aviobj); %打开
    for i=1:n
    ... %省略画图代码
    currFrame = getframe;
    writeVideo(aviobj,currFrame);
    ... %省略代码
    end
    close(aviobj); %关闭
    展开全文
  • MATLAB数字信号处理(2)LFM脉冲雷达回波处理仿真

    万次阅读 多人点赞 2019-03-13 15:41:24
    将上学期的“气象雷达原理与系统”课程报告放到blog上。 摘要 线性调频(LFM)信号是应用...本设计实现了对线性调频(LFM)脉冲压缩雷达的工作原理仿真,在MATLAB 平台中模拟一个叠加的线性调频回波信号,对该...

    将上学期的“气象雷达原理与系统”课程报告放到blog上。


    摘要

    线性调频(LFM)信号是应用广泛的一种波形,主要优点是脉冲压缩的形状和信噪比对多普勒频移不敏感,即在目标速度未知的情况下,用匹配滤波器仍可以实现回波信号的脉冲压缩,这将大大有利于雷达对目标的探测和信号处理效率的提高。本设计实现了对线性调频(LFM)脉冲压缩雷达的工作原理仿真,在MATLAB 平台中模拟一个叠加的线性调频回波信号,对该信号分别进行采样解调、滤波抽取、脉冲压缩,提取出其中包含的测量物体的距离信息,实验效果良好。


    Abstract

    The linear frequency modulation (LFM) signal is a widely used waveform. The main advantage is that the shape and signal-to-noise ratio of pulse compression are not sensitive to Doppler shift. That is, if the target speed is unknown, the matched filter is still used. Pulse compression of the echo signal can be achieved, which will greatly benefit the radar’s detection of the target and the improvement of signal processing efficiency. This design realizes the simulation of the working principle of linear frequency modulation (LFM) pulse compression radar. In the MATLAB platform, a superimposed chirp echo signal is simulated, and the signal is sampled, demodulated, filtered and compressed, and the distance information of the measured object is extracted. The experimental results are good.


    1、引言

    1.1 作用距离和距离分辨力

    作用距离和距离分辨力是雷达最重要的两个技术指标。作用距离取决于发射信号的能量,发射信号的能量又与发射脉冲的功率和发射时间(即脉冲宽度)成正比。前者受发射管峰值功率和传输线功率损耗等的限制,成本高且调节范围有限。因此,在发射机峰值功率受限的情况下,只能通过增加脉冲宽度的方法来增加信号能量以增大雷达的作用距离。

    雷达的距离分辨力取决于发射信号带宽,带宽越大,距离分辨力越好。传统脉冲雷达发射的是单频信号,脉冲宽度越窄,信号带宽就越宽,距离分辨率就越好。然而发射窄脉冲必然导致平均功率下降,进而减小雷达的作用距离。因此,传统的脉冲雷达中,增大作用距离和提高雷达的分辨力之间存在矛盾。

    为了兼顾雷达的作用距离和距离分辨力,发射信号应同时具备大时宽和大带宽的特点,为此,研究人员利用复杂波形来替代传统的单频脉冲信号。在发射端调制信号的频率或相位以增大信号的带宽,并发射大时宽的信号以保证作用距离。在接收端通过匹配滤波器,将接收到的宽脉冲信号进行脉冲压缩得到窄脉冲信号,提高距离分辨率,从而兼顾了作用距离和距离分辨力。这是雷达隐蔽、抗干扰、区分多目标的重要手段。研究最早且应用最广泛的复杂波形便是线性调频信号。

    1.2 线性调频信号

    雷达波形设计中,采用线性调频信号的优势在于信号产生方便,同时当目标回波存在多普勒频移时脉压结果变化较小,缺点是经过脉压处理后副瓣较高,固定为13.6dB,虽然可以通过加窗的方法对其进行抑制,但同时对信号的其他特性也会带来损失,另外在时宽带宽积小于20时,主瓣副瓣比会变小,导致性能恶化。

    线性调频信号的产生方法在早期雷达中使用的是通过全通移相网络、压控振荡器或色散延迟线的方法,后来采用声表面波器件通过模拟手段形成。而新一代雷达一般则使用DDS技术直接合成。脉冲压缩处理方法在现代雷达中一般采用数字方式进行。有两类方式,一类是在频域上进行处理,将零中频回波信号进行快速傅里叶变换然后与发射信号的频谱相乘,然后再进行逆傅里叶变换得出结果;另一类是时域处理法,将零中频信号与回波信号进行卷积直接得出结果。

    早期,由于FPGA硬件水平较低,无法进行大量的乘法并行运算,所以主要使用DSP以第一类方法为主。目前随着FPGA的设计制造工艺水平逐步提高,使用FPGA来实现各种雷达信号处理算法乃至整个雷达信号处理系统成为了一种数字信号处理的发展趋势。
    本文设计实现了对线性调频(LFM)脉冲压缩雷达的工作原理仿真,在MATLAB 平台中模拟一个叠加的线性调频回波信号,对该信号分别进行采样解调、滤波抽取、脉冲压缩,提取出其中包含的测量物体的距离信息。


    2、原理分析

    2.1 LFM 脉冲雷达原理分析

    雷达是利用无线电波来检测目标并测定目标的有无、目标斜距、目标角位置、目标相对速度等的装置。雷达发射机的任务是产生符合要求的雷达波形,然后经馈线和收发开关由发射天线辐射出去,遇到目标后,电磁波一部分反射,经接收天线和收发开关由接收机接收,对雷达回波信号做适当的处理就可以获知目标的相关信息。

    假设目标与雷达的相对距离为 R,雷达发射信号s(t) ,传播速度为光速C ,则经过时间R/C后电磁波到达目标,照射到目标上的电磁波可写成:s(t-R/C)。电磁波与目标相互作用,一部分电磁波被目标散射,被反射的电磁波为σ·s(t-R/C),其中σ为目标的雷达散射截面(RCS)。再经过时间R/C后,被雷达接收天线接收的信号为σ·s(t-2 R/C)。
    在这里插入图片描述

    图 2.1 雷达等效于 LTI 系统

    如果将雷达天线和目标看作一个系统,便得到如图 2.1 的等效,而且这是一个 LTI(线性时不变)系统。

    等效 LTI 系统的冲激响应可写成:

    █(h(t)=∑_(i=1)^M▒σ_i  δ(t-τ_i )#(2.1) )
    M 表示目标的个数,σ_i是目标散射特性,τ_i是光速在雷达与目标之间往返一次的时间:
    在这里插入图片描述
    式中, Ri 为第 i 个目标与雷达的相对距离。雷达发射信号 s(t) 经过该 LTI 系统,得输出信号(即雷达的回波信号)sr (t) :
    在这里插入图片描述
    从雷达回波信号sr (t)提取出表征目标特性的τ_i(表征相对距离)的常用方法如图2.2所示。
    在这里插入图片描述

    图 2.2 雷达回波信号处理

    以上便是线性调频(LFM)脉冲压缩雷达的工作原理。

    2.2数字下变频原理分析

    本设计中可以选用降低采样率来实现数字下变频的目的,原理如图2.3所示。
    在这里插入图片描述

    图 2.3 降低采样率实现数字下变频

    如果原信号采样率为f,则经过n点重采样处理后,采样频率变为f/n。

    2.3脉冲压缩原理分析

    脉冲压缩相当于让 sr(t) 通过雷达发射信号s(t)的匹配滤波器。s(t)的匹配滤波器hr (t)为:
    在这里插入图片描述
    于是进行滤波处理有:
    在这里插入图片描述
    对上式进行傅立叶变换:
    在这里插入图片描述
    如果选取合适的s(t),使它的幅频特性|S(jω)|为常数,那么2.6式可写为:
    在这里插入图片描述
    其傅立叶反变换为:
    在这里插入图片描述
    so (t)中包含目标的特征信息τi和σi。从so(t)中可以得到目标的个数M和每个目标相对雷达的距离:
    在这里插入图片描述
    实现脉冲压缩的方式有两种,一种是直接在时域卷积(滤波)法,另一种是在频域中进行处理,如图 2.4 所示。
    在这里插入图片描述

    图 2.4 频域脉冲压缩处理

    3、详细设计

    3.1 线性调频信号回波产生模块

    表3.1 关键系统参数
    参数含义
    f调频信号基础频率 10MHz
    fs采样频率 100MHz
    ts采样周期 1/fs
    B调频范围 10MHz
    T脉冲宽度 10μs
    c信号传播速度 3×108m/s
    PRT脉冲周期 500μs

    本系统中使用到的关键系统参数如表3.1所示。基于上述参数,本系统中使用的线性调频信号为:
    在这里插入图片描述
    本系统假设该线性调频信号检测到三个目标,距离分别为 10km,30km和31km。本模块使用到的主要信号如表3.2所示。

    表 3.2 回波信号生成模块信号
    信号含义
    y基础线性调频信号
    y110km 处的回波信号
    y230km 处的回波信号
    y331km 处的回波信号
    xt叠加后的回波信号

    线性调频信号回波产生模块的程序设计流程图如图3.1所示。
    在这里插入图片描述

    图3.1 LFM信号回波产生模块程序流程图

    程序设计时先计算出三个距离所对应的传播时间,然后根据时间计算出其对应的序列长度,建立三个子信号分别作为三个距离上的回波信号。之后再设计一个 10μs 的 LFM 信号。每一个回波信号由传播时间、10μs的LFM信号、补零三部分组成,总时长为 PRT。最后将三个回波信号叠加起来。

    3.2 回波信号采样解调模块

    该模块使用一个基础频率的信号进行解调:
    在这里插入图片描述
    本模块使用到的主要信号如表3.3所示。

    表3.3 回波信号采样解调模块信号
    信号含义
    xtLFM 叠加的回波信号
    yf相干载波信号
    xrt解调后的信号

    相干解调的过程只需要让 xt 和 yf 相乘即可,相乘结果即为解调出来的雷达信号。

    3.3 滤波抽取模块

    解调后的信号xrt中包含有两信号相乘的和频信号和差频信号,本模块滤除掉和频信号分量,之后对滤波后的信号重采样,以降低采样率达到数字下变频的目的。本模块使用到的主要信号如表 3.4 所示。

    表3.4 滤波抽取模块信号
    信号含义
    xrt解调后的信号
    firxrt滤波后的信号
    xrtdown数字下变频处理后的信号

    滤波抽取模块的程序设计流程图如图3.2所示。
    在这里插入图片描述

    图 3.2 滤波抽取模块程序流程图

    由于回波信号为10-20MHz,与10MHz的相干信号相乘,结果频谱应该包含 0-10MHz和20-30MHz两个频段,因此使用fdatool设计一个低通滤波器滤除掉20~30MHz的信号。滤波器通带频率15MHz,阻带频率18MHz,通带衰减1dB,阻带衰减1dB,将系数导出到工作空间供滤波处理调用。

    对滤波后的信号使用downsample函数进行4位的抽取,则抽取后的信号采样频率变为100Mhz/4=25MHz。

    3.4 脉冲压缩模块

    表3.5 脉冲压缩模块信号
    信号含义
    xrtdown数字下变频处理后的信号
    hdt匹配滤波信号
    out脉冲压缩处理后的信号

    脉冲压缩模块让下变频后的回波信号通过发射信号的匹配滤波器,提取出每个目标回波的距离信息。脉冲压缩有时域法和频域法两种。本模块使用到的主要信号如表3.5所示。匹配滤波信号hdt如公式3.3所示。
    在这里插入图片描述
    匹配滤波信号中的f0为0Hz。时域法进行脉冲压缩使用hdt与xrtdown直接进行卷积即可。频域法进行脉冲压缩按照图2.4中的原理框图处理。


    4、仿真分析

    4.1 回波产生模块仿真分析

    绘制出雷达回波信号的时域图与频域图,结果如图4.1所示。
    在这里插入图片描述

    图 4.1 雷达回波信号时域与频域

    时域中可以看到在10km、30km、31km处看到三个脉冲波形,其中在30km和 31km的交界处发生了信号叠加。频域中信号的频率范围在10MHz至20MHz间线性分布,符合预期设定。

    4.2 采样解调模块仿真分析

    在这里插入图片描述

    图 4.2 解调后信号时域图和频域图

    绘制出解调,即相乘后的信号时域和频域图,如图4.2所示。时域中可以仍然保留了10km、30km、31km处的三个脉冲波形信息。由于回波信号为10~20MHz,与10MHz的相干信号相乘,结果频谱应该包含0-10MHz和20-30MHz两个频段,因此该模块设计符合预期设定。

    4.3 滤波抽取模块仿真分析

    绘制对解调信号滤波后的信号频域如图4.3所示。
    在这里插入图片描述

    图 4.3 解调信号滤波后频域图

    经过低通滤波后,解调信号中的 20~30MHz 频段被滤除,只留下 0~10MHz频段信号。对该信号抽取后绘制频域如图4.4所示。
    在这里插入图片描述

    图4.4 抽取后信号频域图

    抽取后信号仍保留了0~10MHz的信号信息,但采样频率由100MHz降至25MHz,图4.3中最大频率为100MHz/2=50MHz,图4.4中最大频率为25MHz/2=12.5MHz,表明该模块设计符合预期设定。

    4.4 脉冲压缩模块仿真分析

    脉冲压缩处理后绘制信号的时域图如图4.5所示。
    在这里插入图片描述

    图 4.5 脉冲压缩后信号时域图

    原来每个距离的回波信号脉宽为10μs,经过脉冲压缩后,每个脉冲变为10μs/100=0.1μs。从图4.5中可以清楚的看到在10km、30km、31km处各有一个很窄的脉冲。脉冲压缩处理的能力也决定了雷达信号处理系统的距离分辨力大小, 压缩后脉冲越窄,距离分辨力越大。


    5、结束语

    本设计实现了对线性调频( LFM)脉冲压缩雷达的工作原理仿真,在MATLAB 平台中模拟一个叠加的线性调频回波信号,对该信号分别进行采样解调、滤波抽取、脉冲压缩,提取出其中包含的测量物体的距离信息,实验效果良好。

    脉冲压缩的原理就是使用一个发射信号与接收回波进行相关,可以将较宽的回波信号“压缩”成很窄的信号。压缩后的脉冲宽度决定了可以分辨的最小距离。例如两个目标的回波信号重叠在一起,在回波信号中无法直接分辨出两个目标的位置,未进行脉冲压缩的雷达距离分辨力 ΔR=(cτ)/2=c/(2B)。这种体制的雷达要提高距离分辨率必须减小脉冲宽度,脉宽减少会降低平均发射功率,使用线性调频信号进行脉冲压缩可以实现提高距离分辨率而保持平均发射功率。脉冲压缩后的距离分辨力 ΔR=(cτ’)/2<<(cτ)/2。


    MATLAB代码如下(fir.mat放不上来,按照文中参数使用FDATOOL工具设计导出即可):

    % written by 刘奇
    
    clc;
    clear;
    close all;
    
    f = 10000000;         %10MHz
    fs = 100e6;
    ts = 1 / fs;
    B = 10^7;
    T = 10^(-5);
    u = B / T;
    c = 3e8;
    PRT = 500e-6;
    
    
    r1 = 10000;   tao1 = 2*r1/c;  n1 = round(tao1 / ts);
    r2 = 30000;  tao2 = 2*r2/c;  n2 = round(tao2 / ts);
    r3 = 31000;  tao3 = 2*r3/c;  n3 = round(tao3 / ts);
    NN = PRT / ts;
    
    t1 = 0 : ts : T-ts;
    y = sin(2*pi*(f*t1+0.5*u*t1.^2));
    N = length(y);
    
    
    y1 = [zeros(1, n1), y, zeros(1, NN-n1-N)];
    y2 = [zeros(1, n2), y, zeros(1, NN-n2-N)];
    y3 = [zeros(1, n3), y, zeros(1, NN-n3-N)];
    xt = y1+y2+y3;
    figure;
    subplot(2, 1, 1);
    plot((0:length(xt)-1)*ts*c/2/1000, xt);
    xlabel('距离/km');
    xtfft = abs(fft(xt, 50000));
    subplot(2, 1, 2);
    fx=(0:length(xt)/2-1)*fs/length(xt);
    plot(fx/1e6, xtfft(1:length(xt)/2));
    xlabel('频率/MHz');
    
    % 对回波信号采样
    fs1 = 100e6;
    ts1 = 1/fs1;
    t2 = 0 : ts1 : (length(xt)-1)*ts1;
    xrt = xt .* sin(2*pi*f*t2);
    
    fx1=(0:length(xt)/2-1)*fs1/length(xt);
    figure;
    subplot(2, 1, 1);
    plot((0:length(xt)-1)*ts*c/2/1000, xrt);
    xlabel('距离/km');
    xrtfft = abs(fft(xrt, 50000));
    subplot(2, 1, 2);
    fx1=(0:length(xrt)/2-1)*fs1/length(xrt);
    plot(fx1/1e6, xrtfft(1:length(xrt)/2));
    xlabel('频率/MHz');
    
    load fir.mat
    firxrt = filter(Num, 1,  xrt);
    firfft = abs(fft(firxrt, 50000));
    figure;
    plot(fx1/1e6, firfft(1:length(firxrt)/2));
    xlabel('频率/MHz');
    xrtdown = downsample(firxrt, 4);
     value0=abs(fft(xrtdown));%FFT分析
    figure;
    fx1=(0:length(xrtdown)/2-1)*(fs1/4)/length(xrtdown);
    %plot((fx1(1:length(value0)))/1e6, value0);
    plot( fx1/1e6, value0(1:length(fx1)));
    xlabel('频率/MHz');
    
    T = 10^(-5);
    u = B / T;
    c = 3e8;
    fs = 25e6;
    ts = 1 / fs;
    t1 = 0 : ts : T-ts;
    hdt = sin(2*pi*(0*t1+0.5*u*t1.^2));
    figure;
    plot(hdt);
    
    replica = xrtdown;
    y = fliplr(hdt);
    % out = conv(replica, y);
    replica1= [replica,zeros(1,16384-length(replica))];
    y1 = [hdt,zeros(1,16384-length(hdt))];
    
    rfft = fft(replica1);
    yfft = fft(y1);
    out = abs(ifft((rfft.*conj(yfft))));
    figure;
    t = (0:length(xrtdown)-1)*ts*c/2/1000;
    plot(t, out(1:length(t)));
    xlabel('距离/km');
    
    展开全文
  • 基于MATLAB的语音信号处理

    万次阅读 多人点赞 2018-07-15 01:21:20
    基于MATLAB的语音信号处理摘要:语音信号处理是目前发展最为迅速的信息科学研究领域中的一个,是目前极为活跃和热门的研究领域,其研究成果具有重要的学术及应用价值。语音信号处理的研究,对于机器语言、语音识别、...
  • Matlab图像处理新手——图像分割和画框显示篇 **前言:**许多人说Matlab对未来的工作没什么用,就目前了解的情况而言并非如此。如:现版本已有matlab转化成C语音的功能;matlab与DSP(API协议技术)、FPGA、西门子...
  • 本资源是Matlab图像处理程序——去噪、边缘增强、边缘提取,直接是.m文件,可直接运行,但里面并未附加图片资源,大家需要使用自己的待处理图片
  • MATLAB小波变换图像处理简单示例

    万次阅读 多人点赞 2019-12-20 12:00:40
    前言   从傅里叶变换到短时傅里叶变换再到小波变换,这些分析问题的方法是一代一代人的探索和积累得来的宝贵知识财富。比较常见的还有脊波变换,曲波变换,...这里主要记录MATLAB小波包中的函数的用法而已,也...
  • matlab图像处理——平滑滤波

    万次阅读 多人点赞 2018-11-01 20:52:00
    平滑滤波——matlab图像处理 平滑滤波的目的是消除或尽量减少噪声,改善图像的质量。假设加性噪声是随机独立分布,这样利用图像像素领域的平均或加权平均即可有效地抑制噪声干扰。从信号分析的观点来看,图像平滑...
  • MATLAB处理图像,具体包括原图像显示和噪声处理后图像,接着是维纳滤波的还原图像,根据图像的实验结果,本程序具有较好的处理性能
  • matlab批量处理excel(CSV)文件数据

    万次阅读 多人点赞 2019-01-29 21:51:25
    1-29,参加完2019年美国大学生数学建模竞赛,小伙伴都回家了,就我一个人在寝室,太无聊了,就把在比赛中遇到的excel批处理,写一下思路(ps:其实我在比赛中利用的是SQLServer数据库和matlab相结合的数据处理方法,...
  • 对SAR成像处理领域具有很大的指导意义及帮助,有助于SAR实测数据的读取进行再成像,为SAR成像学习提供了帮助
  • matlab信号处理

    千次阅读 2016-08-31 12:00:57
    ////////////////////////////////matlab信号处理//////////////// 数字信号处理基本理论 在计算机中,所有的信号都是离散信号,因此在使用 MATLAB 进行信号处理之前,首 先要了解离散时间信号处理的相关理论。 ...
  • LAMMPS后处理——MATLAB子函数合集整理

    千次阅读 多人点赞 2021-05-23 16:41:51
    LAMMPS后处理——MATLAB子函数合集整理 博客介绍 一、Dump轨迹的读入、写出 (1)读取Dump轨迹 (2)写出Dump轨迹 二、热力学量(温度、数密度、动能和势能)计算(一维线图、二维云图) (Continue...) 三、结构...
  • MATLAB教程(1) MATLAB 基础知识

    万次阅读 多人点赞 2017-10-26 20:57:32
    初学。去年看过一点点MATLAB,很久不用...第一部分:MATLAB显示桌面的基本布局https://cn.mathworks.com/help/matlab/learn_matlab/desktop.html1.启动MATLAB后,桌面会显示默认布局,主要有以下三个部分: 当前文件夹
  • matlab对图像处理——裁剪 获取灰度图 获取坐标点

    千次阅读 多人点赞 2019-04-16 22:52:08
    matlab截取图像Ⅱ 欢迎来到!德莱联盟 应该是CSDN之bruderlung的博客! 程序要求 建立循环函数,通过程序依此读取十幅原始图像,然后将原始图像转存为灰度图像 确定数码管所显示数字的四角坐标,然后将...
  • 图像处理篇-利用matlab 图像的二值化

    万次阅读 2019-04-21 17:05:38
    二值化阀值 将256个亮度等级的灰度图像通过适当的阀值选取,所有的灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些 像素点被排除在物体区域以外,灰度...在matlab中二值化图像函数为i...
  • MATLAB图像处理实验——细胞图像的分割和计数

    万次阅读 多人点赞 2018-04-23 21:39:55
    本实验为使用MATLAB编写的细胞图像分割及计数系统,实现了对图像内细胞的计数,以及对每个细胞周长和面积的测量,并分别展示了分割的每个细胞的图像。 实验步骤共分为图像预处理、图像预分割、空洞填充、黏连细胞...
  • MATLAB--数字图像处理 图像锐化

    万次阅读 多人点赞 2019-12-12 22:40:32
    1.熟悉MATLAB软件的使用。 2.掌握图像锐化的原理及数学运算。 3.于MATLAB环境下编程实现对图片锐化。 三、实验内容     利用图像基于单方向梯度算子,Robert算子,Sobel算 子,Pritt算 子, ...
  • fluent后处理matlab

    2010-04-22 07:53:22
    fluent后处理matlab.描述了怎么用matlab处理fluent曲线
  • 使用MATLAB分析处理csv数据

    万次阅读 多人点赞 2019-07-03 12:00:01
    文章目录MATLAB加载csv文件的4种方法用MATLAB对csv数据进行滤波插值制表1 MATLAB加载csv文件,合并数据2 MATLAB滤波和插值3 MATLAB绘制图表4 附录——MATLAB完整代码 MATLAB加载csv文件的4种方法 1 使用csvread...
  • MATLAB手写数字识别

    万次阅读 多人点赞 2019-07-31 14:07:22
    本文主要是根据《matlab手写神经网络实现识别手写数字》博客中的代码进行试验。由于没有数据集,所以采用了MNIST数据集进行代码的运行。数据集不同所以需要对代码进行微小改动。 简介 数据处理:4000张作为训练样本...
  • 二维离散傅里叶变换DFT matlab代码图像处理领域离散傅里叶变换的作用二维离散傅里叶变换二维离散傅里叶变换公式将二维的离散傅里叶变换进行转化将系数转化为矩阵形式注意,从矩阵的乘积i形式可以看出,原来是N个值,...
  • matlab时频分析之短时傅里叶变换 spectrogram

    万次阅读 多人点赞 2019-03-22 15:50:25
    matlab时频分析之短时傅里叶变换 spectrogram 短时傅里叶变换常用于缓慢时变信号的频谱分析,可以观察沿时间变化的频谱信号。 其优点如下图所示,弥补了频谱分析中不能观察时间的缺点,也弥补了时域分析不能获取频率...
  • matlab图像二值化处理

    2018-07-14 20:36:22
    用于图像二值化处理的简单代码。可以自动确定合适的阈值,并显示处理前、处理后的效果图。
  • matlab批量处理excel数据,绘图并保存

    千次阅读 2019-10-02 08:58:18
    近期做实验需要处理大量的.dat格式数据,文件内容格式相同,生成折线图并保存图片。 思路: 1. 新建文件夹dat_in,存放待处理数据文件 2. 循环读取文件名,放入元胞数组 3. 按文件名循环处理数据,每个文件...
  • MATLAB实现彩色图像灰度化

    千次阅读 多人点赞 2019-12-12 19:05:26
    注意在进行图像处理前,要对读入的图像数据使用double()或im2double()进行类型转换!! 否则,uint8类型的图像数据运算结果超出255就会发生溢出!! im = imread ( 'autumn.tif' ) ; figure ( 'name' , '原图像'...
  • MATLAB信号处理

    万次阅读 多人点赞 2018-09-18 20:54:45
    这周在学堂在线学习了MATLAB信号处理方面的知识,作以下总结: 1.小波分解与重构:(离散二进正交小波变换) a:逼近系数(平滑系数),d:细节系数(小波系数) 原信号s经1层小波分解:a1,d1;2层小波分解:a2...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,703
精华内容 25,481
关键字:

matlab后处理

matlab 订阅