随机信号处理功率谱估计Levinson-Durbin递推算法(C语言)

本文介绍了使用Levinson-Durbin递推算法在C语言中进行随机信号谱估计的方法。随机信号模型包含两个频率分量的正弦波和高斯白噪声。评估估计质量主要依据均分误差和偏差,通过绘制误差图来观察随着SNR变化的性能。文中并未详细展开算法原理,但提到了在别处可查阅相关资料,同时提到了具体的代码实现。
摘要由CSDN通过智能技术生成

随机信号做谱估计(4)-Levinson-Durbin——C语言

随机信号模型
这里我们用X(n)=s(n)+w(n)来表示所分析的随机信号,其中s(n)是具有两个频率分量的正弦波,可表示为是s(n)=A1sin(2pif1+pi/3)+A2sin(2pif2+pi/4)。w(n)是随机高斯白噪声,它的谱线是一个直线,用它代表信号在传播中所夹杂的噪声不仅可以体现随机过程而且对于功率谱的求解也更为简单。
估计质量的评价
可以用均分误差以及偏差来评价估计质量的好坏,通过画出均分误差和均值随SNR变化的图来观察估计质量。
原理
利用维纳-辛钦定理,信号的自相关函数和功率谱是一对傅里叶变换对。
(具体原理可以查书)
代码
(具体如何实现(1)中有介绍)

#include <stdlib.h>
#include <time.h>
#include <math.h>
#include<cstdio>
#define pi 3.1415916
#define N 128   //样本点数
#define M 100 //信噪比取的个数
#define C 50 //相同信噪比进行次数
#define P 50//阶次
#define W_K_half 60
#define f1 0.1     
#define f2 0.13

void xcorr(double* number, double* sn);
void awgn(double* num);
void freqz(double* ap, double* Hw, double G);
int findPeaks(double* xn, int* address);
void rank(double* mse1, double* mse2, double* expect1, double* expect2, double* snr);
void prin(double* snr, double* mse1, double* mse2, double* approximate1, double* approximate2);
double Levinson_Durbin(double* rm, double ap[P + 1][P + 1], double* km, double* rou);
struct C_complex_double
{
   
	double	real;
	double image;
};  //复数结构体
int main(int argc, char* argv[])
{
   
	double xn[N] = {
    .0 };  //信号
	double Pn[N] = {
    .0 };
	double Pnoise[M] = {
    .0 };  
	double noise[M] = {
    .0 };
	double rm[N] = {
    .0 }; //
	double rk[N] = {
    0.0 };
	int address[50] = {
    0 };   //寻找峰值后记录峰值的位置
	double x2n[N] = {
    .0 };   //加高斯白噪声后的信号  
	double mse_f1[M] = {
    .0 };
	double mse_f2[M] = {
    .0 };  //均分误差
	double num[N] = {
    .0 };  //随机数存储
	double approximate1[M] = {
    .0 };
	double approximate2[M] = {
    .0 };   //估计值
	double Hw[W_K_half] = {
   .0};    //功率谱
	double ap[P + 1][P + 1] = {
   .0};  
年来,高阶谱H(igher一derrsPectar一05)和神经网络引起了广泛的兴趣。在理论研究 和应用方面都取得很大的进展。我们研究高阶谱主要有下歹纽三方面的原因:提取偏离高 斯特性以外的信息;恢复信号的正确的相位信息;在时间序列分析中,检测和表征信号的 非线性特性。在时间序列分析和系统辨识中,利用神经网络的一个主要原因就是前向神 经网络逼近任意连续有界函数的能力。 本论文基于高阶谱和神经网络,在随机信号的处理方面作者作了以下几方面的工作: 我们首先提出Sims-aPi一l让改de回归神经网络,推导其学习算法,并成功将此神经网络 用于线性和非线性系统辨识及天气预测。 在第三章,我们提出基于高阶谱的线性测试方法,该方法用来测试时间序列或未知模 型的线性和非线性特性。 对三相电机不对称故障检测和条件监视,我们提出了基于双谱的分析的新方法。 作者提出推广矩特征空间G(MF)s方法,GMFS方法能提供比传统的矩特征空间伍『S) 更多的信息,易于实现信号的辨识和分类。我们并将CM咫方法用于三相电机的故障分类 和条件监视,并取得了满意的实验结果。 提出了基于双倒谱的非最小相位系统的辨识算法,该算法独立的重建系统的最小相位 和最大相位分量,同时不需要相位解卷运算。 提出了基于三阶累积量的非最小相位系统辨识CRI巧新算法,并从理论上分析了算法 的统计特性。这个算法完全适用于AR,MA,ARM人模型。 最后,我们提出模型阶数递推算法,用于非最小相位模型的定阶。该算法是基于信号 的二阶和三阶统计特性,该算法能同时获得模型的阶数和模型的参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值