我正在尝试在论文中编写伪代码。以下是我想要的片段和图像。有人可以帮我格式化吗?
\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
文档。