Latex(数学)

为美赛做个准备吧,正好把latex一些用法整理一下。
以tex live为准。

字体

罗马字体 \mathrm{}

for i in range(97, 123):
    print('$\\mathrm{{{0}}}$'.format(chr(i)))
$\mathrm{*}$

在这里插入图片描述

for i in range(65, 91):
    print('$\\mathrm{{{0}}}$'.format(chr(i)))
$\mathrm{*}$

在这里插入图片描述

斜体 \mathit{}

$\mathit{*}$
for i in range(97, 123):
    print('$\\mathit{{{0}}}$'.format(chr(i)))

在这里插入图片描述

for i in range(65, 91):
    print('$\\mathit{{{0}}}$'.format(chr(i)))

在这里插入图片描述

粗体 \mathbf{}

$\mathbf{*}$
for i in range(97, 123):
    print('$\\mathbf{{{0}}}$'.format(chr(i)))

在这里插入图片描述

for i in range(65, 91):
    print('$\\mathbf{{{0}}}$'.format(chr(i)))

在这里插入图片描述

无衬线-f \mathsf{}

$\mathsf{*}$
for i in range(97, 123):
    print('$\\mathsf{{{0}}}$'.format(chr(i)))

在这里插入图片描述

for i in range(65, 91):
    print('$\\mathsf{{{0}}}$'.format(chr(i)))

在这里插入图片描述

打字机字体 \mathtt{}

$\mathtt{*}$
for i in range(97, 123):
    print('$\\mathtt{{{0}}}$'.format(chr(i)))

在这里插入图片描述

for i in range(65, 91):
    print('$\\mathtt{{{0}}}$'.format(chr(i)))

在这里插入图片描述

书法字体 \mathcal{}

$\mathcal{*}$
for i in range(65, 91):
    print('$\\mathcal{{{0}}}$'.format(chr(i)))

在这里插入图片描述

注:小写字母貌似没有

黑板粗体 \mathbb{} \usepackage{amssymb}

$\mathbb{*}$
for i in range(65, 91):
    print('$\\mathbb{{{0}}}$'.format(chr(i)))

在这里插入图片描述

注: 小写字母貌似没有

德文尖角体 \mathfrak{} \usepackage{amssymb}

$\mathfrak{*}$
for i in range(97, 123):
    print('$\\mathfrak{{{0}}}$'.format(chr(i)))

在这里插入图片描述

for i in range(65, 91):
    print('$\\mathfrak{{{0}}}$'.format(chr(i)))

在这里插入图片描述

花体 \mathscr{} \usepackage{mathrsfs}

$\mathscr{}$
for i in range(65, 91):
    print('$\\mathscr{{{0}}}$'.format(chr(i)))

在这里插入图片描述

注:小写貌似没有

数学符号表(摘自《140分钟学会LaTex》)

数学模式重音符号(头顶上的那玩意)

在这里插入图片描述

希腊字母

在这里插入图片描述

二元关系

在这里插入图片描述

$\not\in$

̸ ∈ \not\in ̸

二元运算符

在这里插入图片描述

“大”运算符

在这里插入图片描述

箭头

在这里插入图片描述

定界符

在这里插入图片描述

大定界符

在这里插入图片描述

其他符号(AMS的符号就不贴了)

在这里插入图片描述

一些数学公式写法的例子

$\mathbf{Var}[(CR)_{ij}] = \mathop{\sum}\limits_{t=1}^{c}\mathbf{Var}[X_t]
=\mathop{\sum}\limits_{k=1}^{n}\frac{A_{ik}^{2}B_{kj}^{2}}{cp_k}
-\frac{1}{c}(AB)_{ij}^2$

V a r [ ( C R ) i j ] = ∑ t = 1 c V a r [ X t ] = ∑ k = 1 n A i k 2 B k j 2 c p k − 1 c ( A B ) i j 2 \mathbf{Var}[(CR)_{ij}] = \mathop{\sum}\limits_{t=1}^{c}\mathbf{Var}[X_t] =\mathop{\sum}\limits_{k=1}^{n}\frac{A_{ik}^{2}B_{kj}^{2}}{cp_k} -\frac{1}{c}(AB)_{ij}^2 Var[(CR)ij]=t=1cVar[Xt]=k=1ncpkAik2Bkj2c1(AB)ij2

\begin{displaymath}
	\begin{array}{ll}
		\min & E[\|AB-CR\|_F^2]\\
		s.t. & \mathop{\sum}\limits_{i=1}^{n}p_i = 1
	\end{array}
\end{displaymath}

min ⁡ E [ ∥ A B − C R ∥ F 2 ] s . t . ∑ i = 1 n p i = 1 \begin{array}{ll} \min & E[\|AB-CR\|_F^2]\\ s.t. & \mathop{\sum}\limits_{i=1}^{n}p_i = 1 \end{array} mins.t.E[ABCRF2]i=1npi=1

\[ #\usepackage{amssymb, amsmath}
\begin{split}
x_k = & x_{k-1} + \gamma_k[A_kx_{k-1}-(x_{k-1}^{\top}A_kx_{k-1})x_{k-1}]\\
=& x_{k-1} + \gamma_k[Ax_{k-1}-(x_{k-1}^{\mathrm{T}}Ax_{k-1})x_{k-1}]\\
&+\gamma_k[(A_k-A)x_{k-1}-(x_{k-1}^{\top}(A_k-A)x_{k-1})x_{k-1}
\end{split}
\]

在这里插入图片描述

\begin{equation} \label{eq:1}
	\frac{\mathrm{d}\|z\|_2^{2}}{\mathrm{d}t} = 2z\frac{\mathrm{d}z}{\mathrm{d}t} = 0
\end{equation}
#\ref{eq:1}引用

在这里插入图片描述

$\underbrace{a+b+\cdots+z}_{26}$

a + b + ⋯ + z ⎵ 26 \underbrace{a+b+\cdots+z}_{26} 26 a+b++z

\begin{displaymath} 
\mathbf{X} =
\left( \begin{array}{ccc} 
x_{11} & x_{12} & \ldots \\ 
x_{21} & x_{22} & \ldots \\ 
 \vdots & \vdots & \ddots 
\end{array} \right) 
\end{displaymath}

在这里插入图片描述

\begin{displaymath} 
y = \left\{ \begin{array}{ll} 
a & \textrm{if $d>c$}\\ 
b+x & \textrm{in the morning}\\ 
l & \textrm{all day long} 
\end{array} \right. 
\end{displaymath}

y = { a if  d > c b + x in the morning l all day long y = \left\{ \begin{array}{ll} a & \textrm{if $d>c$}\\ b+x & \textrm{in the morning}\\ l & \textrm{all day long} \end{array} \right. y=ab+xlif d>cin the morningall day long

\begin{displaymath} 
\left(\begin{array}{c|c} 
1 & 2 \\ 
\hline 
3 & 4 
\end{array}\right) 
\end{displaymath}

( 1 2 3 4 ) \left(\begin{array}{c|c} 1 & 2 \\ \hline 3 & 4 \end{array}\right) (1324)

\begin{displaymath} 
{}^{12}_{\phantom{1}6}\textrm{C} 
\qquad \textrm{versus} \qquad 
{}^{12}_{6}\textrm{C} 
\end{displaymath}

1 6 12 C versus 6 12 C {}^{12}_{\phantom{1}6}\textrm{C} \qquad \textrm{versus} \qquad {}^{12}_{6}\textrm{C} 1612Cversus612C

\begin{displaymath}
\frac{\mathrm{d}f}{\mathrm{d}\theta}=
\mathrm{(\cos \theta, -\sin \theta)}
\left(\begin{array}{cc}
	\mathrm{x_1^T}\\
	\mathrm{x_2^T}
\end{array} \right)
\mathrm{A}
\mathrm{(x_1, x_2)}
\left(\begin{array}{cc}
\sin \theta\\
\cos \theta
\end{array} \right)
\end{displaymath}

在这里插入图片描述

<think>嗯,用户想要用MATLAB实现短时同步挤压Gabor变换(SSGST),需要根据数学公式进行离散化和核心计算。首先,我得回忆一下SSGST的基本原理。SSGST是基于短时傅里叶变换(STFT)的,然后通过同步挤压技术来提高时频分辨率。对吧? 首先,用户提到的Gabor变换应该就是STFT,因为Gabor变换通常指的是加窗傅里叶变换。所以,我需要先实现STFT部分。根据引用[2],STFT是通过加窗并滑动窗口来计算每个时间点的频谱。那MATLAB中通常是怎么实现的呢?可能需要自己编写代码,比如分帧、加窗、FFT等步骤。 接下来是同步挤压变换(SST),这部分的核心是将STFT的结果在频率方向上进行重新分配,压缩到更接近真实频率的位置。根据文献,挤压操作需要计算瞬时频率,通常是通过STFT的相位导数来估计。也就是说,对每个时频点(t,ω),计算其瞬时频率,然后将该点的能量重新分配到新的频率位置。 数学公式方面,SSGST的离散化需要考虑如何将连续公式转化为离散的矩阵运算。比如,STFT的离散形式是:对信号x[n],窗口h[m],STFT计算为每个时间点n的窗口内信号的FFT。然后,瞬时频率的计算可能需要使用STFT的相位差,或者通过解析信号的方法。 用户提供的引用中有一些相关的代码,比如引用[3]中的cwt函数用于小波变换,引用[4]中的滤波器设计,可能对信号预处理有帮助。不过SSGST主要涉及的是时频分析和挤压步骤。 接下来,我需要规划实现的步骤: 1. 生成测试信号:可能像引用[3]那样,创建一个包含不同频率成分的非平稳信号,方便验证时频分析的效果。 2. 实现STFT:分帧、加窗、FFT。需要确定窗口类型(比如高斯窗)、窗口长度、重叠步长等参数。例如,使用汉宁窗或者高斯窗,窗口长度影响时间与频率分辨率。 3. 计算瞬时频率:对于每个时频点(t,f),计算其相位导数。这通常可以通过STFT的差分来计算,或者使用解析信号的方法。例如,对STFT结果进行相位求导,可能需要计算相邻时间点或频率点的相位差。 4. 同步挤压:将每个时频点的幅值根据其瞬时频率重新分配到更精确的频率位置,可能需要使用插值方法,因为瞬时频率可能不在离散的频率格点上。 5. 累积挤压后的结果,形成高分辨率的时频图。 需要注意的问题包括:窗口的选择、频率轴的离散化、如何高效计算瞬时频率,以及挤压时的插值方法(比如线性插值或者更精确的方法)。此外,计算量可能较大,需要考虑优化。 在MATLAB中,分帧可以通过循环或者矩阵操作实现。例如,预先生成所有帧的索引矩阵,然后进行向量化运算。加窗则是对每一帧乘以窗口函数。FFT之后得到的是复数矩阵,从中可以提取幅度和相位。 瞬时频率的计算可能需要使用STFT的导数。根据公式,瞬时频率ω'(t,ω) = ω - Im{(∂t STFT(t,ω)) / STFT(t,ω)},其中∂t是时间方向的导数。这可能涉及到对STFT在时间方向上的差分,例如使用差分近似导数。 然后,对于每个点(t,ω),计算新的频率位置ω',并将该点的幅值累加到(t,ω')的位置。由于ω'可能是非整数索引,需要使用插值方法将值分配到最近的频率bin,或者进行更精细的处理。 现在,如何将这个过程转化为MATLAB代码呢?可能需要以下步骤: 1. 参数设置:信号采样率,窗口长度,重叠长度,窗口函数,频率范围等。 2. 分帧处理:将信号分成多个帧,每帧加窗,并计算每帧的FFT。 3. 计算STFT矩阵:得到复数矩阵,大小为频率bins × 时间帧数。 4. 计算瞬时频率矩阵:对每个时频点计算瞬时频率。 5. 同步挤压:根据瞬时频率重新分配能量,生成挤压后的时频矩阵。 6. 绘制结果,比较STFT和SSGST的效果。 可能的难点在于瞬时频率的计算和挤压过程的高效实现。例如,如何避免循环过多导致速度慢,可能需要矩阵运算优化。另外,挤压时可能需要二维插值,但为了简化,可以使用最近邻或线性插值,将每个点的幅值分配到最近的频率位置。 现在,参考引用[2]中的STFT实现思路,用户可能需要自己编写分帧和加窗的代码。例如,对于信号x,生成时间帧的索引,每个帧应用窗口函数,然后进行FFT。 对于同步挤压的步骤,假设已经得到STFT的结果S(t,ω),计算时间导数∂t S,可以通过沿时间轴差分,例如diff(S,1,2),但需要注意维度。然后,瞬时频率的计算可能需要将相位导数转换为频率偏移。 此外,挤压后的频率轴可能需要更精细的分辨率,或者保持原来的频率轴,根据瞬时频率调整每个点的位置。例如,原频率轴是离散的,但挤压后的位置可能是连续的,需要进行离散化处理。 综上,一个可能的代码框架如下: - 生成测试信号(如调频信号) - 定义窗口参数,计算STFT - 计算瞬时频率 - 进行同步挤压 - 显示结果 具体实现时,需要注意处理边界情况,例如时间导数的边缘处理,避免数组越界。此外,挤压过程可能需要使用accumarray函数或循环来累加幅值到新的频率位置。 可能还需要参考Gabor变换的现有实现,但根据用户提供的引用,MATLAB中可能没有现成的SSGST函数,所以需要自行编写。此外,用户提供的引用[1]提到复值离散Gabor变换,这可能与STFT有关,但具体实现可能需要更多数学处理。 总之,实现步骤大致是:STFT→计算瞬时频率→同步挤压→显示。需要将数学公式离散化,处理矩阵运算,并确保效率。</think>### 短时同步挤压Gabor变换(SSGST)的MATLAB实现步骤 #### 1. 核心公式与离散化 SSGST的核心公式分为三部分: - **短时傅里叶变换 (STFT)**: $$ S(t,\omega) = \int x(\tau)h(\tau-t)e^{-i\omega (\tau-t)}d\tau $$ 离散形式为: $$ S[n,k] = \sum_{m=0}^{L-1} x[m]h[m-n]e^{-i2\pi k(m-n)/N} $$ - **瞬时频率估计**: $$ \hat{\omega}(n,k) = \frac{\text{Im}\left(\frac{\partial S[n,k]}{\partial t} \cdot S^*[n,k]\right)}{|S[n,k]|^2} $$ - **同步挤压操作**: $$ T(t,\eta) = \sum_{k:|\hat{\omega}(n,k)-\eta|<\Delta \omega/2} S[n,k] $$ #### 2. MATLAB实现代码 ```matlab %% 参数设置 fs = 1000; % 采样率 t = 0:1/fs:2; % 时间序列 x = cos(2*pi*50*t) + ... % 测试信号(非平稳信号) cos(2*pi*120*t).*(t>0.5 & t<1.5); win_len = 256; % 窗长度 overlap = 200; % 重叠长度 hop = win_len - overlap; % 帧移 nfft = 1024; % FFT点数 %% 1. 短时傅里叶变换(STFT) win = hann(win_len, 'periodic'); % 汉宁窗 [S, f, t_stft] = stft(x, win, overlap, nfft, fs); %% 2. 计算瞬时频率 [nt, nf] = size(S); omega = 2*pi*f; dSdt = diff(S, 1, 2)/hop; % 时间方向差分(近似时间导数) S_center = S(:, 1:end-1); % 对齐矩阵维度 omega_hat = omega - imag(dSdt ./ S_center); % 瞬时频率估计 %% 3. 同步挤压操作 T = zeros(size(S)); % 初始化挤压结果矩阵 delta_omega = mean(diff(omega)); % 频率分辨率 for i = 1:nt for j = 1:(length(t_stft)-1) idx = floor(omega_hat(i,j)/delta_omega) + 1; % 计算新频率位置 if idx >= 1 && idx <= nf T(idx, j) = T(idx, j) + abs(S_center(i,j)); % 幅值重新分配 end end end %% 可视化结果 figure; subplot(211); surface(t_stft, f, 20*log10(abs(S)), 'EdgeColor', 'none'); title('STFT时频谱'); xlabel('Time (s)'); ylabel('Frequency (Hz)'); subplot(212); surface(t_stft, f, 20*log10(T(:,1:length(t_stft))), 'EdgeColor', 'none'); title('SSGST时频谱'); xlabel('Time (s)'); ylabel('Frequency (Hz)'); ``` #### 3. 关键实现细节 1. **STFT优化**:使用MATLAB内置`stft`函数(需Signal Processing Toolbox),也可自定义实现: ```matlab function [S, f, t] = custom_stft(x, win, overlap, nfft, fs) [S, f, t] = spectrogram(x, win, overlap, nfft, fs, 'yaxis'); end ``` 2. **瞬时频率改进**:可通过解析信号提高估计精度: ```matlab analytic_S = hilbert(S); % 解析信号 dSdt = diff(angle(analytic_S), 1, 2)*fs; % 相位差分 ``` 3. **同步挤压加速**:使用矩阵运算替代嵌套循环: ```matlab [rows, cols] = find(abs(S_center) > 0.01); % 阈值筛选有效点 new_freq_idx = round(omega_hat(sub2ind(size(omega_hat),rows,cols))/delta_omega); valid = (new_freq_idx >= 1) & (new_freq_idx <= nf); T = accumarray([new_freq_idx(valid), cols(valid)], abs(S_center(sub2ind(size(S_center),rows(valid),cols(valid)))), [nf, size(S,2)]); ``` #### 4. 验证与调试 - **测试信号验证**:使用包含$50$Hz和$120$Hz成分的信号,可观察到SSGST在$t=0.5-1.5$秒区间能更清晰分离高频成分(对比STFT模糊区域) - **性能优化**:通过`parfor`并行计算加速挤压过程,或使用GPU加速矩阵运算
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值