函数 > 信号处理 > 谱分析 > 示例:谱分析
  
示例:谱分析
使用 coherencecspectrumpspectrumsnr 函数可计算信号或信号对的相干、交叉谱、功率谱和信噪比。
对此取平均值过程的描述可在 Prentice-hall,Inc. 出版 Samuel Stearns 和 Ruth david 合著的 Signal Processing Algorithms (《信号处理算法》) 一书中找到。
功率谱 - 使用 DFT
对于仅少数数据点具有信号对应值的长时间序列,我们希望功率谱显示信号的频率,而不是噪声或零值。
1. 定义窗口宽度。
单击复制此表达式
单击复制此表达式
2. 定义两个可能的窗口:w1w2,其中信号不为零。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
3. 将窗口宽度设置为两个可选宽度中的一个。
单击复制此表达式
4. 定义信号和采样频率。
单击复制此表达式
单击复制此表达式
5. 使用函数 sin 定义选定窗口内外的信号。
单击复制此表达式
单击复制此表达式
6. 绘制信号图像。
单击复制此表达式
7. 使用函数 dft 计算 x 的离散傅立叶变换。
单击复制此表达式
单击复制此表达式
8. 在频域中绘制所生成函数的图像。
单击复制此表达式
单击复制此表达式
对于纯正弦波信号,DFT 系数的模提供对其功率谱的良好估计。但在此情况下,信号的 DFT 为结构化数据与矩形窗口 ( sinc 函数) 变换间卷积的频谱。
设置 W= w2 (步骤 3) 可加宽窗口,使正弦波信号由 230–300 变为 0–499 (因子为 7.143x),并增大两个波峰的幅度,将其从 35 变为 250 (因子同样为 7.143x)。
出现波峰时的频率保持不变。
功率谱 - 使用 pspectrum
函数 pspectrum 将原始时间序列分成多个重叠的时段。对每个时段进行 DFT 变换,然后对变换后的模的系数取平均值。如果时段的长度与要在信号中分析的现象的标度相同,则 pspectrum 函数可返回一个较好的近似值,该近似值为原始时间序列所需部分分量的模。
通常,信号的长度至少应为 n + 1
1. 定义信号的长度、重叠部分和窗口类型 (尖顶矩形)。
单击复制此表达式
单击复制此表达式
单击复制此表达式
2. 使用函数 pspectrum 计算 x 的功率谱,计算方法为:将 x 分成 n1 个重叠段 (重叠部分为 r) 并使用尖顶矩形窗设置各段的窗口。
单击复制此表达式
3. 使用函数 floorlength 证明区间长度为下式的最大数 L
单击复制此表达式
4. 使用正则化频率轴绘制谱图 (采样频率为 1)。
单击复制此表达式
单击复制此表达式
单击复制此表达式
5. 计算平均谱功率。
单击复制此表达式
该值约等于信号 x 的均方值。
单击复制此表达式
带白噪声的 pspectrum
计算包含白噪声的信号的功率谱。生成两个此类信号,因为交叉谱计算需要第二个信号。使用汉明窗渐缩数据块。
1. 定义信号宽度。
单击复制此表达式
单击复制此表达式
2. 使用函数 sinrnd 定义两个同频为 fc 的信号。函数 rnd 返回 0 到指定数字之间均匀分布的随机数字作为矢量,从而确保信号互不相同。
单击复制此表达式
单击复制此表达式
单击复制此表达式
3. 绘制这两个信号的前 100 个样本。
单击复制此表达式
4. 使用函数 pspectrum 获得 y1 的功率谱,计算方法为:将其分成 40 个重叠段 (重叠部分为 0.5) 并使用汉明窗设置各段的窗口。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
5. 使用函数 matchmax 求该功率谱的峰值样本。
单击复制此表达式
单击复制此表达式
单击复制此表达式
6. 绘制谱图,以分贝为单位。使用标记来标记同频和最大分贝值。
单击复制此表达式
单击复制此表达式
单击复制此表达式
绘图表明所有信号功率均出现在同频 fc1-fc 处。
7. 计算噪声功率。
单击复制此表达式
8. 计算以 dB 为单位的噪声功率增益。
单击复制此表达式
9. 将上述两个频率样本除以谱长度,可以得出正弦分量的平均功率 0.5,通过这种方法来计算高度。
单击复制此表达式
或:
单击复制此表达式
10. 比较理论与实际高度,以分贝为单位。
单击复制此表达式
单击复制此表达式
cspectrum 函数
通常,交叉谱图用于检验两个信号的相似之处,例如,将已知的语音波形 (比如元音 "a") 与未知的语音波形 (比如单词 "apple") 进行比较可查看未知波形中是否包含已知波形。就像时间序列的功率谱与其自相关类似一样,两个时间序列的交叉谱图也与其互相关类似。对于平稳随机序列,谱函数返回的值与相关函数返回的值相同。
1. 将函数 cspectrum 应用于信号 y1y2 (使用 40 个重叠部分为 0.5 的重叠段并使用尖顶矩形窗设置各段的窗口)。
单击复制此表达式
2. 绘制谱图,以分贝为单位。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
3. 绘制交叉谱图,请记住,因为它为复值形式,因此应对模应用 log 函数。
单击复制此表达式
交叉谱图 y1y2 在同频 fc1- fc 处显示波峰。
coherence 和 snr 函数
函数 coherence 用于测量一个信号与另一个信号的线性关系,等于两个信号的交叉谱图除以两者的功率谱所得模的平方,其取值范围介于零和一之间。如果 coherence 函数的值为 1,则表示两信号在该频带中均具有强无噪分量,如果其值为 0,则表示该频带中大部分是噪声。
信噪比函数 snr 等于 coherence 函数除以一与 coherence 函数的差,当两个信号的任意分量波段中具有强分量时可获得最大值,与信号强度和传感器或背景噪声强度的比值成比例。
1. 将函数 coherence 应用于信号 y1y2 (使用 40 个重叠部分为 0.5 的重叠段并使用汉明窗设置各段的窗口)。
单击复制此表达式
单击复制此表达式
单击复制此表达式
2. 绘制 coherence 函数的图像。使用标记来标记同频和最大值。
单击复制此表达式
单击复制此表达式
3. 将函数 snr 应用于信号 y1y2 (使用 40 个重叠部分为 0.5 的重叠段并使用汉明窗设置各段的窗口)。
单击复制此表达式
单击复制此表达式
单击复制此表达式
4. 绘制信噪比函数的图象。使用标记来标记同频和最大值。
单击复制此表达式
单击复制此表达式
这两个函数 (coherencesnr) 的最大值均出现在被添加了噪声 (由每侧的两个短柱表示) 的两个信号的单频分量处。