Loading

latex 算法伪代码

参考自:Latex-算法伪代码

宏包

\usepackage{algorithm}
\usepackage

示例1:基本用法

官方用例如下:

\begin{algorithm} 
	\caption{Calculate $y = x^n$} 
	\label{alg3} 
	\begin{algorithmic}
		\REQUIRE $n \geq 0 \vee x \neq 0$ 
		\ENSURE $y = x^n$ 
		\STATE $y \gets 1$ 
		\IF{$n < 0$} 
		\STATE $X \gets 1 / x$ 
		\STATE $N \gets -n$ 
		\ELSE 
		\STATE $X \gets x$ 
		\STATE $N \gets n$ 
		\ENDIF 
		\WHILE{$N \neq 0$} 
		\IF{$N$ is even} 
		\STATE $X \gets X \times X$ 
		\STATE $N \gets N / 2$ 
		\ELSE[$N$ is odd] \STATE $y \gets y \times X$ 
		\STATE $N \gets N - 1$ 
		\ENDIF 
		\ENDWHILE 
	\end{algorithmic} 
\end{algorithm}

示例2:

\begin{algorithm}
	%\textsl{}\setstretch{1.8}
	\renewcommand{\algorithmicrequire}{\textbf{Input:}}
	\renewcommand{\algorithmicensure}{\textbf{Output:}}
	\caption{STVMD based on STFT}
	\label{alg1}
	\begin{algorithmic}[1]
		\STATE Initialization:$\left\{ {s_{k,t}^1} \right\},\left\{ {\omega _{k,t}^1} \right\},\lambda _t^1,n \leftarrow 0$
		\STATE  ${s_{r,t}}\left( \omega  \right) = \int_0^{ + \infty } {{s_r}\left( \tau  \right){w_h}\left( {t - \tau } \right)} \exp \left( {j\omega \tau } \right)d\tau $   (via STFT)
		\REPEAT
		\STATE $n \leftarrow n + 1$
		\STATE Update $ s_{k,t}^{n + 1} $ based on Equation~(\ref{eqn_8})
		\STATE Update $\omega _{k,t}^{n + 1}$ based on Equation~(\ref{eqn_9})
		\STATE Update $\lambda _t^{n + 1} $ based on Equation~(\ref{eqn_10})
		\UNTIL $\sum\limits_{k=1}^P  {{{\left\| {s_{k,t}^{n + 1}\left( \omega  \right) - s_{k,t}^n\left( \omega  \right)} \right\|_2^2} \mathord{\left/
					{\vphantom {{\left\| {s_{k,t}^{n + 1}\left( \omega  \right) - s_{k,t}^n\left( \omega  \right)} \right\|_2^2} {\left\| {s_{k,t}^n\left( \omega  \right)} \right\|_2^2}}} \right.
					\kern-\nulldelimiterspace} {\left\| {s_{k,t}^n\left( \omega  \right)} \right\|_2^2}}}  < \varepsilon $  
		\STATE   Update ${s_k}\left( t \right)$ based on Equation~(\ref{eqn_11_12})  (via ISTFT)
		\ENSURE  decomposed modes $ \left\{ {{s_k}\left( t \right)} \right\}$, $\left\{ {{\omega _k}\left( t \right)} \right\}$
	\end{algorithmic}  
\end{algorithm}

  • 添加\renewcommand{\algorithmicrequire}{\textbf{Input:}}\renewcommand{\algorithmicensure}{\textbf{Output:}}
    将将官方的 require 和 ensure 关键字换成我们常用的 input 和 output。
  • %\textsl{}\setstretch{1.8} 有的时候我们的公式比较复杂,所以存在两行公式之间的间隔很短或者重叠,所以我们显示调整伪代码中行距,就可以使用上面的语句。

示例3:

包含了加comment + procedure的用法

\begin{algorithm}
\caption{Put your caption here}
\begin{algorithmic}[1]

\Procedure{Roy}{$a,b$}       \Comment{This is a test}
    \State System Initialization
    \State Read the value 
    \If{$condition = True$}
        \State Do this
        \If{$Condition \geq 1$}
        \State Do that
        \ElsIf{$Condition \neq 5$}
        \State Do another
        \State Do that as well
        \Else
        \State Do otherwise
        \EndIf
    \EndIf

    \While{$something \not= 0$}  \Comment{put some comments here}
        \State $var1 \leftarrow var2$  \Comment{another comment}
        \State $var3 \leftarrow var4$
    \EndWhile  \label{roy's loop}
\EndProcedure

\end{algorithmic}
\end{algorithm}

一些额外的指令

  • \Statex %算法中的空行
  • \Comment{xxx} %注释
  • \Function{xxx}{xxx} ....... \EndFunction 函数
  • \If{xxx} ....... \EndIf
  • \Repeat .... \Until{xxx}
posted @ 2021-08-08 17:04  摇头晃脑学知识  阅读(2251)  评论(0编辑  收藏  举报