FT_DSP.gitlink.net/master/html/appdevelop/dsp/rdsar.html

537 lines
78 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html class="writer-html5" lang="zh-CN" data-content_root="../../">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>RDSAR距离-多普勒SAR成像算法 &mdash; MindSpore Signal+ 使用手册 alpha 文档</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=03e43079" />
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="../../_static/table.css?v=72b86d3e" />
<script src="../../_static/jquery.js?v=5d32c60e"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../../_static/documentation_options.js?v=406e4f49"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/translations.js?v=beaddf03"></script>
<script src="../../_static/table.js?v=99ed15ba"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="索引" href="../../genindex.html" />
<link rel="search" title="搜索" href="../../search.html" />
<link rel="next" title="AI辅助开发示例" href="../autocodegen/index.html" />
<link rel="prev" title="DSP应用示例" href="index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../index.html" class="icon icon-home">
MindSpore Signal+ 使用手册
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="搜索文档" aria-label="搜索文档" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="导航菜单">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../quickstart/index.html">快速入门</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">应用开发示例</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../ai_dsp/index.html">AI+DSP应用示例</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">DSP应用示例</a><ul class="current">
<li class="toctree-l3 current"><a class="current reference internal" href="#">RDSAR距离-多普勒SAR成像算法</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id1">算法概述</a></li>
<li class="toctree-l4"><a class="reference internal" href="#matlab">MATLAB 实现</a></li>
<li class="toctree-l4"><a class="reference internal" href="#mindspore-signal">MindSpore Signal+ 实现</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id6">板卡部署</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id7">参考与源码</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../autocodegen/index.html">AI辅助开发示例</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../functionlib/index.html">算子库支持</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../refdoc/index.html">参考资料</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="移动版导航菜单" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">MindSpore Signal+ 使用手册</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="页面导航">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../index.html">应用开发示例</a></li>
<li class="breadcrumb-item"><a href="index.html">DSP应用示例</a></li>
<li class="breadcrumb-item active">RDSAR距离-多普勒SAR成像算法</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/appdevelop/dsp/rdsar.md.txt" rel="nofollow"> 查看页面源码</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="rdsar-sar">
<h1>RDSAR距离-多普勒SAR成像算法<a class="headerlink" href="#rdsar-sar" title="Link to this heading"></a></h1>
<section id="id1">
<h2>算法概述<a class="headerlink" href="#id1" title="Link to this heading"></a></h2>
<p>RDSARRange-Doppler SAR是一种经典的合成孔径雷达SAR成像算法通过距离-多普勒域处理实现高分辨率雷达图像重建。该算法是SAR成像的基础方法之一广泛应用于遥感、军事侦察、地形测绘等领域。</p>
</section>
<section id="matlab">
<h2>MATLAB 实现<a class="headerlink" href="#matlab" title="Link to this heading"></a></h2>
<div class="highlight-matlab notranslate"><div class="highlight"><pre><span></span><span class="cm">%{</span>
<span class="cm"> 本代码用于对雷达的回波数据利用RD算法~普通版本进行成像。</span>
<span class="cm"> 2023/11/18 20:47</span>
<span class="cm">%}</span>
<span class="nb">close</span><span class="w"> </span><span class="nb">all</span><span class="p">;</span>
<span class="c">%% 数据读取</span>
<span class="c">% 加载数据</span>
<span class="c">% 1536*2048 complex int8</span>
<span class="n">echo1</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">importdata</span><span class="p">(</span><span class="s">&#39;CDdata1.mat&#39;</span><span class="p">);</span>
<span class="c">% 1536*2048 complex int8</span>
<span class="n">echo2</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">importdata</span><span class="p">(</span><span class="s">&#39;CDdata2.mat&#39;</span><span class="p">);</span>
<span class="c">% 将回波拼装在一起</span>
<span class="c">% 3072*2048 complex int8</span>
<span class="nb">echo</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">double</span><span class="p">([</span><span class="n">echo1</span><span class="p">;</span><span class="n">echo2</span><span class="p">]);</span>
<span class="c">% 加载参数</span>
<span class="n">para</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">importdata</span><span class="p">(</span><span class="s">&#39;CD_run_params.mat&#39;</span><span class="p">);</span>
<span class="n">Fr</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">para</span><span class="p">.</span><span class="n">Fr</span><span class="p">;</span><span class="w"> </span><span class="c">% 距离向采样率</span>
<span class="n">Fa</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">para</span><span class="p">.</span><span class="n">PRF</span><span class="p">;</span><span class="w"> </span><span class="c">% 方位向采样率</span>
<span class="n">f0</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">para</span><span class="p">.</span><span class="n">f0</span><span class="p">;</span><span class="w"> </span><span class="c">% 中心频率</span>
<span class="n">Tr</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">para</span><span class="p">.</span><span class="n">Tr</span><span class="p">;</span><span class="w"> </span><span class="c">% 脉冲持续时间</span>
<span class="n">R0</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">para</span><span class="p">.</span><span class="n">R0</span><span class="p">;</span><span class="w"> </span><span class="c">% 最近点斜距</span>
<span class="n">Kr</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="o">-</span><span class="n">para</span><span class="p">.</span><span class="n">Kr</span><span class="p">;</span><span class="w"> </span><span class="c">% 线性调频率</span>
<span class="n">c</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">para</span><span class="p">.</span><span class="n">c</span><span class="p">;</span><span class="w"> </span><span class="c">% 光速</span>
<span class="c">% 以下参数来自课本附录A</span>
<span class="n">Vr</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">7062</span><span class="p">;</span><span class="w"> </span><span class="c">% 等效雷达速度</span>
<span class="n">Ka</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">1733</span><span class="p">;</span><span class="w"> </span><span class="c">% 方位向调频率</span>
<span class="n">f_nc</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="o">-</span><span class="mi">6900</span><span class="p">;</span><span class="w"> </span><span class="c">% 多普勒中心频率</span>
<span class="n">lamda</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">c</span><span class="o">/</span><span class="n">f0</span><span class="p">;</span><span class="w"> </span><span class="c">% 波长</span>
<span class="c">%% 图像填充</span>
<span class="c">% 计算参数</span>
<span class="p">[</span><span class="n">Na</span><span class="p">,</span><span class="n">Nr</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">size</span><span class="p">(</span><span class="nb">echo</span><span class="p">);</span>
<span class="c">% 按照全尺寸对图像进行补零</span>
<span class="c">% 4096*3414 complex double</span>
<span class="nb">echo</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">padarray</span><span class="p">(</span><span class="nb">echo</span><span class="p">,[</span><span class="nb">round</span><span class="p">(</span><span class="n">Na</span><span class="o">/</span><span class="mi">6</span><span class="p">),</span><span class="w"> </span><span class="nb">round</span><span class="p">(</span><span class="n">Nr</span><span class="o">/</span><span class="mi">3</span><span class="p">)]);</span>
<span class="c">% 计算参数</span>
<span class="c">% 4096*3414 complex double</span>
<span class="p">[</span><span class="n">Na</span><span class="p">,</span><span class="n">Nr</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">size</span><span class="p">(</span><span class="nb">echo</span><span class="p">);</span>
<span class="c">%% 轴产生</span>
<span class="c">% 距离向时间轴及频率轴</span>
<span class="n">tr_axis</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">2</span><span class="o">*</span><span class="n">R0</span><span class="o">/</span><span class="n">c</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="o">-</span><span class="n">Nr</span><span class="o">/</span><span class="mi">2</span><span class="p">:</span><span class="n">Nr</span><span class="o">/</span><span class="mi">2</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="n">Fr</span><span class="p">;</span><span class="w"> </span><span class="c">% 距离向时间轴</span>
<span class="n">fr_gap</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">Fr</span><span class="o">/</span><span class="n">Nr</span><span class="p">;</span>
<span class="c">% 交换行向量的左右两半部分。如果一个向量的元素数为奇数,则中间的元素被视为属于向量的左半部分</span>
<span class="n">fr_axis</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">fftshift</span><span class="p">(</span><span class="o">-</span><span class="n">Nr</span><span class="o">/</span><span class="mi">2</span><span class="p">:</span><span class="n">Nr</span><span class="o">/</span><span class="mi">2</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">.*</span><span class="n">fr_gap</span><span class="p">;</span><span class="w"> </span><span class="c">% 距离向频率轴</span>
<span class="c">% 方位向时间轴及频率轴</span>
<span class="n">ta_axis</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">(</span><span class="o">-</span><span class="n">Na</span><span class="o">/</span><span class="mi">2</span><span class="p">:</span><span class="n">Na</span><span class="o">/</span><span class="mi">2</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="n">Fa</span><span class="p">;</span><span class="w"> </span><span class="c">% 方位向时间轴</span>
<span class="n">ta_gap</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">Fa</span><span class="o">/</span><span class="n">Na</span><span class="p">;</span><span class="w"> </span>
<span class="n">fa_axis</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">f_nc</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">fftshift</span><span class="p">(</span><span class="o">-</span><span class="n">Na</span><span class="o">/</span><span class="mi">2</span><span class="p">:</span><span class="n">Na</span><span class="o">/</span><span class="mi">2</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">.*</span><span class="n">ta_gap</span><span class="p">;</span><span class="w"> </span><span class="c">% 方位向频率轴</span>
<span class="c">% 方位向对应纵轴,应该转置成列向量</span>
<span class="n">ta_axis</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">ta_axis</span><span class="o">&#39;</span><span class="p">;</span>
<span class="n">fa_axis</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">fa_axis</span><span class="o">&#39;</span><span class="p">;</span>
<span class="c">%% 第一步 距离压缩</span>
<span class="c">% 距离向傅里叶变换返回每行的FFT计算结果</span>
<span class="n">echo_s1</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">fft</span><span class="p">(</span><span class="nb">echo</span><span class="p">,[],</span><span class="mi">2</span><span class="p">);</span>
<span class="c">% 距离向距离压缩滤波器</span>
<span class="n">echo_d1_mf</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">exp</span><span class="p">(</span>1<span class="nb">i</span><span class="o">*</span><span class="nb">pi</span><span class="o">/</span><span class="n">Kr</span><span class="o">.*</span><span class="n">fr_axis</span><span class="o">.^</span><span class="mi">2</span><span class="p">);</span>
<span class="c">% 距离向匹配滤波,返回每一行的 n 点逆变换</span>
<span class="n">echo_s1</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">ifft</span><span class="p">(</span><span class="n">echo_s1</span><span class="w"> </span><span class="o">.*</span><span class="w"> </span><span class="n">echo_d1_mf</span><span class="p">,[],</span><span class="mi">2</span><span class="p">);</span>
<span class="c">%% 第二步 方位向傅里叶变换&amp;距离徙动矫正</span>
<span class="c">% 方位向下变频</span>
<span class="n">echo_s1</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">echo_s1</span><span class="w"> </span><span class="o">.*</span><span class="w"> </span><span class="nb">exp</span><span class="p">(</span><span class="o">-</span>2<span class="nb">i</span><span class="o">*</span><span class="nb">pi</span><span class="o">*</span><span class="n">f_nc</span><span class="o">.*</span><span class="n">ta_axis</span><span class="p">);</span>
<span class="c">% 方位向傅里叶变换返回每一列的FFT计算结果</span>
<span class="n">echo_s2</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">fft</span><span class="p">(</span><span class="n">echo_s1</span><span class="p">,[],</span><span class="mi">1</span><span class="p">);</span>
<span class="c">% 计算徙动因子</span>
<span class="n">D</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">lamda</span><span class="o">^</span><span class="mi">2</span><span class="o">*</span><span class="n">R0</span><span class="o">/</span><span class="mi">8</span><span class="o">/</span><span class="n">Vr</span><span class="o">^</span><span class="mi">2</span><span class="o">.*</span><span class="n">fa_axis</span><span class="o">.^</span><span class="mi">2</span><span class="p">;</span>
<span class="n">G</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">exp</span><span class="p">(</span>4<span class="nb">i</span><span class="o">*</span><span class="nb">pi</span><span class="o">/</span><span class="n">c</span><span class="o">.*</span><span class="n">fr_axis</span><span class="o">.*</span><span class="n">D</span><span class="p">);</span>
<span class="c">% 校正</span>
<span class="n">echo_s2</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">echo_s2</span><span class="o">.*</span><span class="w"> </span><span class="n">G</span><span class="p">;</span>
<span class="c">%% 第三步 方位压缩</span>
<span class="c">% 方位向滤波器</span>
<span class="n">echo_d3_mf</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">exp</span><span class="p">(</span><span class="o">-</span>1<span class="nb">i</span><span class="o">*</span><span class="nb">pi</span><span class="o">/</span><span class="n">Ka</span><span class="o">.*</span><span class="n">fa_axis</span><span class="o">.^</span><span class="mi">2</span><span class="p">);</span>
<span class="c">% 方位向脉冲压缩</span>
<span class="n">echo_s3</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">echo_s2</span><span class="w"> </span><span class="o">.*</span><span class="w"> </span><span class="n">echo_d3_mf</span><span class="p">;</span>
<span class="c">% 方位向逆傅里叶变换,返回每一列的逆变换结果</span>
<span class="n">echo_s3</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">ifft</span><span class="p">(</span><span class="n">echo_s3</span><span class="p">,[],</span><span class="mi">1</span><span class="p">);</span>
<span class="c">%% 数据最后的矫正</span>
<span class="c">% 根据实际观感,方位向做合适的循环位移</span>
<span class="n">echo_s4</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">circshift</span><span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="n">echo_s3</span><span class="p">),</span><span class="w"> </span><span class="o">-</span><span class="mi">3328</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
<span class="c">% 上下镜像</span>
<span class="n">echo_s4</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">flipud</span><span class="p">(</span><span class="n">echo_s4</span><span class="p">);</span>
<span class="n">echo_s5</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">abs</span><span class="p">(</span><span class="n">echo_s4</span><span class="p">);</span>
<span class="n">saturation</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">50</span><span class="p">;</span>
<span class="n">echo_s5</span><span class="p">(</span><span class="n">echo_s5</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">saturation</span><span class="p">)</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">saturation</span><span class="p">;</span>
<span class="c">%% 成像</span>
<span class="c">% 绘制处理结果热力图</span>
<span class="nb">figure</span><span class="p">;</span>
<span class="nb">imagesc</span><span class="p">(</span><span class="n">tr_axis</span><span class="o">.*</span><span class="n">c</span><span class="p">,</span><span class="n">ta_axis</span><span class="o">.*</span><span class="n">c</span><span class="p">,</span><span class="n">echo_s5</span><span class="p">);</span>
<span class="nb">title</span><span class="p">(</span><span class="s">&#39;处理结果(RD算法)&#39;</span><span class="p">);</span>
<span class="c">% 以灰度图显示</span>
<span class="n">echo_res</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">gather</span><span class="p">(</span><span class="n">echo_s5</span><span class="w"> </span><span class="o">./</span><span class="w"> </span><span class="n">saturation</span><span class="p">);</span>
<span class="c">% 直方图均衡</span>
<span class="n">echo_res</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">adapthisteq</span><span class="p">(</span><span class="n">echo_res</span><span class="p">,</span><span class="s">&quot;ClipLimit&quot;</span><span class="p">,</span><span class="mf">0.004</span><span class="p">,</span><span class="s">&quot;Distribution&quot;</span><span class="p">,</span><span class="s">&quot;exponential&quot;</span><span class="p">,</span><span class="s">&quot;Alpha&quot;</span><span class="p">,</span><span class="mf">0.5</span><span class="p">);</span>
<span class="nb">figure</span><span class="p">;</span>
<span class="nb">imshow</span><span class="p">(</span><span class="n">echo_res</span><span class="p">);</span>
</pre></div>
</div>
</section>
<section id="mindspore-signal">
<h2>MindSpore Signal+ 实现<a class="headerlink" href="#mindspore-signal" title="Link to this heading"></a></h2>
<p>在开始编写 MindSpore Signal+ 实现之前,建议先对原始 MATLAB 代码做流程梳理。可以将整体算法分为以下几个部分:</p>
<ul class="simple">
<li><p>1.数据读取</p></li>
<li><p>2.数据预处理</p></li>
<li><p>3.核心计算</p></li>
<li><p>4.数据后处理</p></li>
</ul>
<section id="id2">
<h3>1. 数据读取<a class="headerlink" href="#id2" title="Link to this heading"></a></h3>
<p>在matlab中数据读取是通过<code class="docutils literal notranslate"><span class="pre">importdata</span></code>函数实现的。在Python中使用MindSpore Signal+时我们可以使用NumPy的<code class="docutils literal notranslate"><span class="pre">loadmat</span></code>或SciPy的<code class="docutils literal notranslate"><span class="pre">io.loadmat</span></code>来加载MATLAB文件中的变量因此在Python代码开头需要导入NumPy和SciPy。</p>
<p>示例代码:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># step 0 : 准备初始数据</span>
<span class="n">echo1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">sio</span><span class="o">.</span><span class="n">loadmat</span><span class="p">(</span><span class="s1">&#39;CDdata1.mat&#39;</span><span class="p">)[</span><span class="s1">&#39;data&#39;</span><span class="p">])</span>
<span class="n">echo2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">sio</span><span class="o">.</span><span class="n">loadmat</span><span class="p">(</span><span class="s1">&#39;CDdata2.mat&#39;</span><span class="p">)[</span><span class="s1">&#39;data&#39;</span><span class="p">])</span>
<span class="n">echo</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">echo1</span><span class="p">,</span> <span class="n">echo2</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="c1"># print(echo.shape)</span>
<span class="c1"># RD-SAR parameters</span>
<span class="n">para</span> <span class="o">=</span> <span class="n">sio</span><span class="o">.</span><span class="n">loadmat</span><span class="p">(</span><span class="s1">&#39;CD_run_params.mat&#39;</span><span class="p">)</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">备注</p>
<p>如果当前Python环境中没有安装<code class="docutils literal notranslate"><span class="pre">scipy.io</span></code>可以通过pip进行安装<code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">scipy</span></code></p>
</div>
</section>
<section id="id3">
<h3>2. 数据预处理<a class="headerlink" href="#id3" title="Link to this heading"></a></h3>
<p>从算法整体分析,数据读取后到核心计算之前的步骤,主要是对数据进行填充和轴的生成,这部分都是核心计算的前期准备,建议将这部分代码封装在<code class="docutils literal notranslate"><span class="pre">__init__</span></code>函数中完成,不放在<code class="docutils literal notranslate"><span class="pre">construct</span></code>函数中可以避免额外的开销,当实例化一个类时自动触发一次<code class="docutils literal notranslate"><span class="pre">__init__</span></code>函数。</p>
<p>示例代码:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">rdsar</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Cell</span><span class="p">):</span>
<span class="c1"># 数据预处理</span>
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">echo_shape</span><span class="p">,</span> <span class="n">para</span><span class="p">,</span> <span class="n">Ka</span><span class="p">,</span> <span class="n">f_nc</span><span class="p">):</span>
<span class="nb">super</span><span class="p">(</span><span class="n">rdsar</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Fr</span> <span class="o">=</span> <span class="n">para</span><span class="p">[</span><span class="s2">&quot;Fr&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="c1"># 方位向采样率</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Fa</span> <span class="o">=</span> <span class="n">para</span><span class="p">[</span><span class="s2">&quot;PRF&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="c1"># 中心频率</span>
<span class="bp">self</span><span class="o">.</span><span class="n">f0</span> <span class="o">=</span> <span class="n">para</span><span class="p">[</span><span class="s2">&quot;f0&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="c1"># 脉冲持续时间</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Tr</span> <span class="o">=</span> <span class="n">para</span><span class="p">[</span><span class="s2">&quot;Tr&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="c1"># 最近点斜距</span>
<span class="bp">self</span><span class="o">.</span><span class="n">R0</span> <span class="o">=</span> <span class="n">para</span><span class="p">[</span><span class="s2">&quot;R0&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="c1"># 线性调频率</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Kr</span> <span class="o">=</span> <span class="o">-</span><span class="n">para</span><span class="p">[</span><span class="s2">&quot;Kr&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="o">...</span>
<span class="c1"># 核心计算</span>
<span class="k">def</span><span class="w"> </span><span class="nf">construct</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inputs</span><span class="p">):</span>
<span class="o">...</span>
<span class="k">return</span> <span class="n">results</span>
</pre></div>
</div>
</section>
<section id="id4">
<h3>3. 核心计算<a class="headerlink" href="#id4" title="Link to this heading"></a></h3>
<p>核心计算部分是算法的核心,也是计算复杂度最高的部分,建议将这部分代码封装在<code class="docutils literal notranslate"><span class="pre">construct</span></code>函数中这样可以方便后续的调用。核心计算的迁移主要是将matlab的计算逻辑转换为MindSpore Signal+的API调用例如matlab中的<code class="docutils literal notranslate"><span class="pre">fft(echo,[],2)</span></code>可以转换为<code class="docutils literal notranslate"><span class="pre">mr.FFT(dim=1)</span></code>dim=1 表示按行计算沿着列移动计算每行的FFT。MindSpore Signal+ API列表可以查阅<a class="reference external" href="https://www.mindspore.cn/docs/zh-CN/r2.3.1/api_python/mindspore.html">MindSpore官方文档</a><a class="reference internal" href="../../functionlib/custom_op/index.html"><span class="doc">自定义算子列表</span></a></p>
<p>示例代码:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">rdsar</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Cell</span><span class="p">):</span>
<span class="c1"># 数据预处理</span>
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">echo_shape</span><span class="p">,</span> <span class="n">para</span><span class="p">,</span> <span class="n">Ka</span><span class="p">,</span> <span class="n">f_nc</span><span class="p">):</span>
<span class="o">...</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fft</span> <span class="o">=</span> <span class="n">mr</span><span class="o">.</span><span class="n">FFT</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fft1</span> <span class="o">=</span> <span class="n">mr</span><span class="o">.</span><span class="n">FFT</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ifft</span> <span class="o">=</span> <span class="n">mr</span><span class="o">.</span><span class="n">IFFT</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ifft1</span> <span class="o">=</span> <span class="n">mr</span><span class="o">.</span><span class="n">IFFT</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="o">...</span>
<span class="k">def</span><span class="w"> </span><span class="nf">construct</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">echo</span><span class="p">,</span> <span class="n">temp</span><span class="p">,</span> <span class="n">temp1</span><span class="p">,</span> <span class="n">temp2</span><span class="p">,</span> <span class="n">temp3</span><span class="p">):</span>
<span class="n">echo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">echo</span><span class="p">,</span> <span class="n">ms</span><span class="o">.</span><span class="n">complex64</span><span class="p">)</span>
<span class="n">echo_s1</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fft1</span><span class="p">(</span><span class="n">echo</span><span class="p">)</span>
<span class="n">echo_d1_mf</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sq_fr_axis</span> <span class="o">*</span> <span class="n">temp</span><span class="p">)</span>
<span class="n">echo_s1</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ifft1</span><span class="p">(</span><span class="n">echo_s1</span> <span class="o">*</span> <span class="n">echo_d1_mf</span><span class="p">)</span>
<span class="n">echo_s1</span> <span class="o">=</span> <span class="n">echo_s1</span> <span class="o">*</span> <span class="n">ops</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">temp1</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">ta_axis</span><span class="p">)</span>
<span class="n">echo_s2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fft</span><span class="p">(</span><span class="n">echo_s1</span><span class="p">)</span>
<span class="o">...</span>
<span class="k">return</span> <span class="n">echo_s5</span>
</pre></div>
</div>
<div class="admonition tip">
<p class="admonition-title">小技巧</p>
<p>1.对于一些基本运算符,例如:<code class="docutils literal notranslate"><span class="pre">*</span></code><code class="docutils literal notranslate"><span class="pre">+</span></code><code class="docutils literal notranslate"><span class="pre">/</span></code>只要matlab语义与Python是一致的可以直接写不用转换成API调用。<br>
2.如果某个API在计算流程中反复使用可以提前在<code class="docutils literal notranslate"><span class="pre">__init__</span></code>中实例化,减少开销。</p>
</div>
<p>完成核心计算部分的迁移后,就可以利用实际输入数据进行测试,验证算法的正确性。</p>
<p>示例代码:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># 准备数据</span>
<span class="n">echo1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">sio</span><span class="o">.</span><span class="n">loadmat</span><span class="p">(</span><span class="s2">&quot;CDdata1.mat&quot;</span><span class="p">)[</span><span class="s2">&quot;data&quot;</span><span class="p">])</span>
<span class="n">echo2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">sio</span><span class="o">.</span><span class="n">loadmat</span><span class="p">(</span><span class="s2">&quot;CDdata2.mat&quot;</span><span class="p">)[</span><span class="s2">&quot;data&quot;</span><span class="p">])</span>
<span class="n">echo</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">echo1</span><span class="p">,</span> <span class="n">echo2</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="c1"># 图像填充</span>
<span class="n">Na</span><span class="p">,</span> <span class="n">Nr</span> <span class="o">=</span> <span class="n">echo</span><span class="o">.</span><span class="n">shape</span>
<span class="n">echo</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">pad</span><span class="p">(</span><span class="n">echo</span><span class="p">,</span> <span class="p">((</span><span class="nb">round</span><span class="p">(</span><span class="n">Na</span> <span class="o">/</span> <span class="mi">6</span><span class="p">),</span> <span class="nb">round</span><span class="p">(</span><span class="n">Na</span> <span class="o">/</span> <span class="mi">6</span><span class="p">)),</span> <span class="p">(</span><span class="nb">round</span><span class="p">(</span><span class="n">Nr</span> <span class="o">/</span> <span class="mi">3</span><span class="p">),</span> <span class="nb">round</span><span class="p">(</span><span class="n">Nr</span> <span class="o">/</span> <span class="mi">3</span><span class="p">))))</span>
<span class="n">new_shape</span> <span class="o">=</span> <span class="p">(</span><span class="mi">4096</span><span class="p">,</span> <span class="mi">4096</span><span class="p">)</span>
<span class="n">echo</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">pad</span><span class="p">(</span>
<span class="n">echo</span><span class="p">,</span>
<span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="n">new_shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">echo</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">new_shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">echo</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">])),</span>
<span class="s2">&quot;constant&quot;</span><span class="p">,</span>
<span class="n">constant_values</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">Na</span><span class="p">,</span> <span class="n">Nr</span> <span class="o">=</span> <span class="n">echo</span><span class="o">.</span><span class="n">shape</span>
<span class="n">echo</span> <span class="o">=</span> <span class="n">Tensor</span><span class="p">(</span><span class="n">echo</span><span class="p">)</span>
<span class="n">para</span> <span class="o">=</span> <span class="n">sio</span><span class="o">.</span><span class="n">loadmat</span><span class="p">(</span><span class="s2">&quot;CD_run_params.mat&quot;</span><span class="p">)</span>
<span class="n">Kr</span> <span class="o">=</span> <span class="o">-</span><span class="n">para</span><span class="p">[</span><span class="s2">&quot;Kr&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="n">c</span> <span class="o">=</span> <span class="n">para</span><span class="p">[</span><span class="s2">&quot;c&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="n">Ka</span> <span class="o">=</span> <span class="mi">1733</span>
<span class="n">f_nc</span> <span class="o">=</span> <span class="o">-</span><span class="mi">6900</span>
<span class="n">temp</span> <span class="o">=</span> <span class="n">Tensor</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">/</span> <span class="n">Kr</span> <span class="o">*</span> <span class="mi">1</span><span class="n">j</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">ms</span><span class="o">.</span><span class="n">complex64</span><span class="p">)</span>
<span class="n">temp1</span> <span class="o">=</span> <span class="n">Tensor</span><span class="p">(</span><span class="o">-</span><span class="mi">2</span><span class="n">j</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">f_nc</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">ms</span><span class="o">.</span><span class="n">complex64</span><span class="p">)</span>
<span class="n">temp2</span> <span class="o">=</span> <span class="n">Tensor</span><span class="p">(</span><span class="mi">4</span><span class="n">j</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">/</span> <span class="n">c</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">ms</span><span class="o">.</span><span class="n">complex64</span><span class="p">)</span>
<span class="n">temp3</span> <span class="o">=</span> <span class="n">Tensor</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="n">j</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">/</span> <span class="n">Ka</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">ms</span><span class="o">.</span><span class="n">complex64</span><span class="p">)</span>
<span class="c1"># 实例化模型</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">rdsar</span><span class="p">(</span><span class="n">echo</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">para</span><span class="p">,</span> <span class="n">Ka</span><span class="p">,</span> <span class="n">f_nc</span><span class="p">)</span>
<span class="n">echo_s5</span> <span class="o">=</span> <span class="n">model</span><span class="p">(</span><span class="n">echo</span><span class="p">,</span> <span class="n">temp</span><span class="p">,</span> <span class="n">temp1</span><span class="p">,</span> <span class="n">temp2</span><span class="p">,</span> <span class="n">temp3</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">echo_s5</span><span class="p">)</span>
</pre></div>
</div>
</section>
<section id="id5">
<h3>4. 数据后处理<a class="headerlink" href="#id5" title="Link to this heading"></a></h3>
<p>需要对计算结果进行成像这部分主要是将计算结果转换为图像可以使用matplotlib库进行绘制。</p>
<p>示例代码:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib.pyplot</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">plt</span>
<span class="c1"># 成像</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;show image&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">pcolor</span><span class="p">(</span><span class="n">echo_s5</span><span class="o">.</span><span class="n">numpy</span><span class="p">())</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="s1">&#39;v3.jpg&#39;</span><span class="p">)</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">备注</p>
<p>如果当前Python环境中没有安装<code class="docutils literal notranslate"><span class="pre">matplotlib</span></code>可以通过pip进行安装<code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">matplotlib</span></code></p>
</div>
<p>结果对比:</p>
<div style="display: flex; justify-content: space-around; align-items: center; margin: 20px 0;">
<div style="text-align: center;">
<img src="../../_static/rdsar_matlab.png" alt="rdsar_matlab" width="400"/>
<p style="margin-top: 10px; font-size: 14px; color: #666;">图1MATLAB结果</p>
</div>
<div style="text-align: center;">
<img src="../../_static/rdsar_python.png" alt="rdsar_python" width="400"/>
<p style="margin-top: 10px; font-size: 14px; color: #666;">图2MindSpore Signal+结果</p>
</div>
</div>
<p>可以看出成像上存在一定误差,但整体趋势一致。确认结果无误后,可通过 <code class="docutils literal notranslate"><span class="pre">mindspore.export</span></code> 导出 MINDIR 模型,便于在 MindSpore Lite 端部署(板卡侧运行)。</p>
<p>以下是完整的MindSpore Signal+实现的代码:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">mindspore</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">ms</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">scipy.io</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">sio</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">mindspore</span><span class="w"> </span><span class="kn">import</span> <span class="n">Tensor</span><span class="p">,</span> <span class="n">nn</span><span class="p">,</span> <span class="n">ops</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">mindradar</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">mr</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib.pyplot</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">plt</span>
<span class="k">class</span><span class="w"> </span><span class="nc">rdsar</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Cell</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">echo_shape</span><span class="p">,</span> <span class="n">para</span><span class="p">,</span> <span class="n">Ka</span><span class="p">,</span> <span class="n">f_nc</span><span class="p">):</span>
<span class="nb">super</span><span class="p">(</span><span class="n">rdsar</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
<span class="c1"># 距离向采样率</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Fr</span> <span class="o">=</span> <span class="n">para</span><span class="p">[</span><span class="s2">&quot;Fr&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="c1"># 方位向采样率</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Fa</span> <span class="o">=</span> <span class="n">para</span><span class="p">[</span><span class="s2">&quot;PRF&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="c1"># 中心频率</span>
<span class="bp">self</span><span class="o">.</span><span class="n">f0</span> <span class="o">=</span> <span class="n">para</span><span class="p">[</span><span class="s2">&quot;f0&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="c1"># 脉冲持续时间</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Tr</span> <span class="o">=</span> <span class="n">para</span><span class="p">[</span><span class="s2">&quot;Tr&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="c1"># 最近点斜距</span>
<span class="bp">self</span><span class="o">.</span><span class="n">R0</span> <span class="o">=</span> <span class="n">para</span><span class="p">[</span><span class="s2">&quot;R0&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="c1"># 线性调频率</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Kr</span> <span class="o">=</span> <span class="o">-</span><span class="n">para</span><span class="p">[</span><span class="s2">&quot;Kr&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="c1"># 光速</span>
<span class="bp">self</span><span class="o">.</span><span class="n">c</span> <span class="o">=</span> <span class="n">para</span><span class="p">[</span><span class="s2">&quot;c&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="c1"># 等效雷达速度</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Vr</span> <span class="o">=</span> <span class="mi">7062</span>
<span class="c1"># 方位向调频率</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Ka</span> <span class="o">=</span> <span class="n">Ka</span>
<span class="c1"># 多普勒中心频率</span>
<span class="bp">self</span><span class="o">.</span><span class="n">f_nc</span> <span class="o">=</span> <span class="n">f_nc</span>
<span class="c1"># 波长</span>
<span class="bp">self</span><span class="o">.</span><span class="n">lamda</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">c</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">f0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">saturation</span> <span class="o">=</span> <span class="mi">50</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Na</span> <span class="o">=</span> <span class="n">echo_shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Nr</span> <span class="o">=</span> <span class="n">echo_shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fr_axis</span> <span class="o">=</span> <span class="n">Tensor</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">Nr</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">Nr</span> <span class="o">/</span> <span class="mi">2</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">ms</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fa_axis</span> <span class="o">=</span> <span class="n">Tensor</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">Na</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">Na</span> <span class="o">/</span> <span class="mi">2</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">ms</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fr_gap</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Fr</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">Nr</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ta_axis</span> <span class="o">=</span> <span class="n">Tensor</span><span class="p">(</span>
<span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">Na</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">Na</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">Fa</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">ms</span><span class="o">.</span><span class="n">float32</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ta_gap</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Fa</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">Na</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cast</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">Cast</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">matmul</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">MatMul</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fft</span> <span class="o">=</span> <span class="n">mr</span><span class="o">.</span><span class="n">FFT</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fft1</span> <span class="o">=</span> <span class="n">mr</span><span class="o">.</span><span class="n">FFT</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ifft</span> <span class="o">=</span> <span class="n">mr</span><span class="o">.</span><span class="n">IFFT</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ifft1</span> <span class="o">=</span> <span class="n">mr</span><span class="o">.</span><span class="n">IFFT</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">abs</span> <span class="o">=</span> <span class="n">mr</span><span class="o">.</span><span class="n">ComplexAbs</span><span class="p">()</span>
<span class="c1"># 预处理</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fr_axis</span> <span class="o">=</span> <span class="n">mr</span><span class="o">.</span><span class="n">fftshift</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fr_axis</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">fr_gap</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fa_axis</span> <span class="o">=</span> <span class="n">mr</span><span class="o">.</span><span class="n">fftshift</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fa_axis</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">ta_gap</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">f_nc</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ta_axis</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ta_axis</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fa_axis</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fa_axis</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">D</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">square</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fa_axis</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">lamda</span><span class="o">**</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">R0</span> <span class="o">/</span> <span class="mi">8</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">Vr</span><span class="o">**</span><span class="mi">2</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">G</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">D</span><span class="p">,</span> <span class="n">ops</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fr_axis</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sq_fa_axis</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">square</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fa_axis</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sq_fr_axis</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">square</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fr_axis</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">construct</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">echo</span><span class="p">,</span> <span class="n">temp</span><span class="p">,</span> <span class="n">temp1</span><span class="p">,</span> <span class="n">temp2</span><span class="p">,</span> <span class="n">temp3</span><span class="p">):</span>
<span class="n">echo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">echo</span><span class="p">,</span> <span class="n">ms</span><span class="o">.</span><span class="n">complex64</span><span class="p">)</span>
<span class="n">echo_s1</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fft1</span><span class="p">(</span><span class="n">echo</span><span class="p">)</span>
<span class="n">echo_d1_mf</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sq_fr_axis</span> <span class="o">*</span> <span class="n">temp</span><span class="p">)</span>
<span class="n">echo_s1</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ifft1</span><span class="p">(</span><span class="n">echo_s1</span> <span class="o">*</span> <span class="n">echo_d1_mf</span><span class="p">)</span>
<span class="n">echo_s1</span> <span class="o">=</span> <span class="n">echo_s1</span> <span class="o">*</span> <span class="n">ops</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">temp1</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">ta_axis</span><span class="p">)</span>
<span class="n">echo_s2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fft</span><span class="p">(</span><span class="n">echo_s1</span><span class="p">)</span>
<span class="n">G</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">G</span> <span class="o">*</span> <span class="n">temp2</span>
<span class="n">G</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">G</span><span class="p">)</span>
<span class="n">echo_s2</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">multiply</span><span class="p">(</span><span class="n">echo_s2</span><span class="p">,</span> <span class="n">G</span><span class="p">)</span>
<span class="n">echo_d3_mf</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sq_fa_axis</span> <span class="o">*</span> <span class="n">temp3</span><span class="p">)</span>
<span class="n">echo_s3</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">multiply</span><span class="p">(</span><span class="n">echo_s2</span><span class="p">,</span> <span class="n">echo_d3_mf</span><span class="p">)</span>
<span class="n">echo_s3</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ifft</span><span class="p">(</span><span class="n">echo_s3</span><span class="p">)</span>
<span class="n">echo_s4</span> <span class="o">=</span> <span class="n">ms</span><span class="o">.</span><span class="n">numpy</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">echo_s3</span><span class="p">),</span> <span class="n">shift</span><span class="o">=-</span><span class="mi">3328</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">echo_s4</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">flip</span><span class="p">(</span><span class="n">echo_s4</span><span class="p">,</span> <span class="n">dims</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">saturation_tensor</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">full</span><span class="p">(</span><span class="n">echo_s4</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">saturation</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">ms</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span>
<span class="n">echo_s5</span> <span class="o">=</span> <span class="n">ops</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">echo_s4</span> <span class="o">&gt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">saturation</span><span class="p">,</span> <span class="n">saturation_tensor</span><span class="p">,</span> <span class="n">echo_s4</span><span class="p">)</span>
<span class="k">return</span> <span class="n">echo_s5</span>
<span class="c1"># step 0 : 准备初始数据</span>
<span class="n">echo1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">sio</span><span class="o">.</span><span class="n">loadmat</span><span class="p">(</span><span class="s2">&quot;CDdata1.mat&quot;</span><span class="p">)[</span><span class="s2">&quot;data&quot;</span><span class="p">])</span>
<span class="n">echo2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">sio</span><span class="o">.</span><span class="n">loadmat</span><span class="p">(</span><span class="s2">&quot;CDdata2.mat&quot;</span><span class="p">)[</span><span class="s2">&quot;data&quot;</span><span class="p">])</span>
<span class="n">echo</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">echo1</span><span class="p">,</span> <span class="n">echo2</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="c1"># 图像填充</span>
<span class="n">Na</span><span class="p">,</span> <span class="n">Nr</span> <span class="o">=</span> <span class="n">echo</span><span class="o">.</span><span class="n">shape</span>
<span class="n">echo</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">pad</span><span class="p">(</span><span class="n">echo</span><span class="p">,</span> <span class="p">((</span><span class="nb">round</span><span class="p">(</span><span class="n">Na</span> <span class="o">/</span> <span class="mi">6</span><span class="p">),</span> <span class="nb">round</span><span class="p">(</span><span class="n">Na</span> <span class="o">/</span> <span class="mi">6</span><span class="p">)),</span> <span class="p">(</span><span class="nb">round</span><span class="p">(</span><span class="n">Nr</span> <span class="o">/</span> <span class="mi">3</span><span class="p">),</span> <span class="nb">round</span><span class="p">(</span><span class="n">Nr</span> <span class="o">/</span> <span class="mi">3</span><span class="p">))))</span>
<span class="n">new_shape</span> <span class="o">=</span> <span class="p">(</span><span class="mi">4096</span><span class="p">,</span> <span class="mi">4096</span><span class="p">)</span>
<span class="n">echo</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">pad</span><span class="p">(</span>
<span class="n">echo</span><span class="p">,</span>
<span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="n">new_shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">echo</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">new_shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">echo</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">])),</span>
<span class="s2">&quot;constant&quot;</span><span class="p">,</span>
<span class="n">constant_values</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">Na</span><span class="p">,</span> <span class="n">Nr</span> <span class="o">=</span> <span class="n">echo</span><span class="o">.</span><span class="n">shape</span>
<span class="n">echo</span> <span class="o">=</span> <span class="n">Tensor</span><span class="p">(</span><span class="n">echo</span><span class="p">)</span>
<span class="n">para</span> <span class="o">=</span> <span class="n">sio</span><span class="o">.</span><span class="n">loadmat</span><span class="p">(</span><span class="s2">&quot;CD_run_params.mat&quot;</span><span class="p">)</span>
<span class="n">Kr</span> <span class="o">=</span> <span class="o">-</span><span class="n">para</span><span class="p">[</span><span class="s2">&quot;Kr&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="n">c</span> <span class="o">=</span> <span class="n">para</span><span class="p">[</span><span class="s2">&quot;c&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="n">Ka</span> <span class="o">=</span> <span class="mi">1733</span>
<span class="n">f_nc</span> <span class="o">=</span> <span class="o">-</span><span class="mi">6900</span>
<span class="n">temp</span> <span class="o">=</span> <span class="n">Tensor</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">/</span> <span class="n">Kr</span> <span class="o">*</span> <span class="mi">1</span><span class="n">j</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">ms</span><span class="o">.</span><span class="n">complex64</span><span class="p">)</span>
<span class="n">temp1</span> <span class="o">=</span> <span class="n">Tensor</span><span class="p">(</span><span class="o">-</span><span class="mi">2</span><span class="n">j</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">f_nc</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">ms</span><span class="o">.</span><span class="n">complex64</span><span class="p">)</span>
<span class="n">temp2</span> <span class="o">=</span> <span class="n">Tensor</span><span class="p">(</span><span class="mi">4</span><span class="n">j</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">/</span> <span class="n">c</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">ms</span><span class="o">.</span><span class="n">complex64</span><span class="p">)</span>
<span class="n">temp3</span> <span class="o">=</span> <span class="n">Tensor</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="n">j</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">/</span> <span class="n">Ka</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">ms</span><span class="o">.</span><span class="n">complex64</span><span class="p">)</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">rdsar</span><span class="p">(</span><span class="n">echo</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">para</span><span class="p">,</span> <span class="n">Ka</span><span class="p">,</span> <span class="n">f_nc</span><span class="p">)</span>
<span class="n">ms</span><span class="o">.</span><span class="n">export</span><span class="p">(</span>
<span class="n">model</span><span class="p">,</span> <span class="n">echo</span><span class="p">,</span> <span class="n">temp</span><span class="p">,</span> <span class="n">temp1</span><span class="p">,</span> <span class="n">temp2</span><span class="p">,</span> <span class="n">temp3</span><span class="p">,</span> <span class="n">file_name</span><span class="o">=</span><span class="s2">&quot;rdsarv3&quot;</span><span class="p">,</span> <span class="n">file_format</span><span class="o">=</span><span class="s2">&quot;MINDIR&quot;</span>
<span class="p">)</span>
<span class="n">echo_s5</span> <span class="o">=</span> <span class="n">model</span><span class="p">(</span><span class="n">echo</span><span class="p">,</span> <span class="n">temp</span><span class="p">,</span> <span class="n">temp1</span><span class="p">,</span> <span class="n">temp2</span><span class="p">,</span> <span class="n">temp3</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">echo_s5</span><span class="p">)</span>
<span class="c1"># 成像</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;show image&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">pcolor</span><span class="p">(</span><span class="n">echo_s5</span><span class="o">.</span><span class="n">numpy</span><span class="p">())</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="s1">&#39;v3.jpg&#39;</span><span class="p">)</span>
</pre></div>
</div>
</section>
</section>
<section id="id6">
<h2>板卡部署<a class="headerlink" href="#id6" title="Link to this heading"></a></h2>
<p>模型部署建议使用 <code class="docutils literal notranslate"><span class="pre">YHFT-IDE</span></code>,它集成了模型转换、模型可视化与 MindSpore Lite 端部署模板。具体使用方法可参考 <a class="reference internal" href="../../quickstart/hellodsp.html#c"><span class="std std-ref">HelloDSP MindSpore Lite端</span></a></p>
<div class="admonition tip">
<p class="admonition-title">小技巧</p>
<p>源数据为 .mat 格式C++ 侧无法直接读取。可使用第三方库 <a class="reference external" href="https://sourceforge.net/projects/matio/">MATIO</a> 读取,或先用 Python 转存为通用二进制/文本格式再在 C++ 侧读取。</p>
</div>
</section>
<section id="id7">
<h2>参考与源码<a class="headerlink" href="#id7" title="Link to this heading"></a></h2>
<ul class="simple">
<li><p>基于RD、CS和ωk算法的合成孔径雷达成像算法原理与实现<a class="reference external" href="https://github.com/highskyno1/SAR_imaging_with_RD_CS_wk">SAR_imaging_with_RD_CS_wk</a></p></li>
<li><p>Python 示例:<a class="reference external" href="https://gitee.com/nudt-674/mind-radar/tree/master/examples/rdsar">RDSAR</a></p></li>
<li><p>Lite 端工程:<a class="reference external" href="https://gitee.com/nudt-674/mindspore/tree/develop/mindspore/lite/examples/rdsar">RDSAR</a></p></li>
</ul>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="页脚">
<a href="index.html" class="btn btn-neutral float-left" title="DSP应用示例" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> 上一页</a>
<a href="../autocodegen/index.html" class="btn btn-neutral float-right" title="AI辅助开发示例" accesskey="n" rel="next">下一页 <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; 版权所有 2025 - 2026, NUDT-674。</p>
</div>
利用 <a href="https://www.sphinx-doc.org/">Sphinx</a> 构建,使用的
<a href="https://github.com/readthedocs/sphinx_rtd_theme">主题</a>
<a href="https://readthedocs.org">Read the Docs</a> 开发.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>