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}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通