在 LaTeX 中编写伪算法

在 LaTeX 中编写伪算法

我正在尝试在论文中编写伪代码。以下是我想要的片段和图像。有人可以帮我格式化吗?

\begin{algorithm}[H]
\DontPrintSemicolon
$D_{obs}{(f,Nx,Ny,x,y)\leftarrow D_{obs}(t,Nx,Ny,x,y) \text{by 1-D forward FFT}}}$

$D_{0}\leftarrow D_{obs}$

$for f \leftarrow 1,2,...,F$

$do$

$for f \leftarrow 1,2,...,F $

$do$

${{D^f}_n} \leftarrow a_{n}{{D^f}_{obs}} + (1 - a_{n})Sf_{d}{D^f}_{n-1}+ (1 - S})f_{d}{D^f}_{n-1}$

$ \Vert{{D^f}_n} - {D^f}_{n-1}{\Vert^2}_F \leq \varepsilon$

$\text{then return {D^f}_n}$

$ \text{then return {D^f}_{n_{max}}}$

$ \text{then return {D_{recovered}}}$

${D_{recovered}}(t,Nx,Ny,x,y)\leftarrow {D_{recovered}}(f,Nx,Ny,x,y) \text {by 1-D inerse FFT}$    

\caption{Example code}
\end{algorithm}

当我运行我的 Latex 代码时,我得到以下代码:

在此处输入图片描述

它应该是这样的:

在此处输入图片描述

目前,看上去很乱。

答案1

这里的问题是你没有使用算法包的功能。为了得到你想要的东西,你必须使用类似的包algorithm2e并使用其命令来正确显示缩进和关键字。

一个使用示例是这样的,它渲染出的东西接近你的期望,并且类似于评论中提出的东西:

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath}
\usepackage[ruled]{algorithm2e}

\begin{document}

\begin{algorithm}[H]
    \DontPrintSemicolon
    $\mathbf{D}_{obs}(f,Nx,Ny,x,y)\leftarrow \mathbf{D}_{obs}(t,Nx,Ny,x,y)$ by 1-D forward FFT\;    
    $\mathbf{D}_0\leftarrow\mathbf{D}_{obs}$\;
    \For{$f\leftarrow 1,2,\dots,F$}{
        \For{$f\leftarrow 1,2,\dots,F$}{
            $\mathbf{D}^f_n \leftarrow a_n\mathbf{D}^f_{obs} + (1 - a_n)\mathcal{SF}_{d}\mathbf{D}^f_{n-1} + (1 - \mathcal{S})\mathcal{F}_{d}\mathbf{D}^f_{n-1}$\;
            \If{$\left\|\mathbf{D}^f_n - \mathbf{D}^f_{n-1}\right\|_F^2\leq\epsilon$}{
                \textbf{return} $\mathbf{D}^f_n$\;
            }
            \textbf{return} $\mathbf{D}^f_{n_{max}}$\;
        }
        \textbf{return} $\mathbf{D}_{recovered}$\;
    }
    $\mathbf{D}_{recovered}(t,Nx,Ny,x,y)\leftarrow \mathbf{D}_{recovered}(f,Nx,Ny,x,y)$ by 1-D inverse FFT\;

    \caption{Example code}
\end{algorithm}

\end{document}

如果您想更改关键字的显示样式、左侧规则的书写方式、是否显示行号,我将带您转到algorithm2e文档

相关内容