声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

声振论坛 展示 基础理论 查看内容

高斯信号和非高斯信号的问题

2012-12-29 10:37| 发布者: aspen| 查看: 2723| 评论: 0|原作者: 花如月|来自: 振动论坛

摘要: 最近看到这个问题,我就查了一些相关的资料。后来发现即使在百度和google的搜索引擎里也没有发现特别令人满意的定义和令人信服的区分方法。最后就将搜索范围转到了中国期刊网,还真找到了一篇大牛的文章。拿来分享一 ...
最近看到这个问题,我就查了一些相关的资料。后来发现即使在百度和google的搜索引擎里也没有发现特别令人满意的定义和令人信服的区分方法。最后就将搜索范围转到了中国期刊网,还真找到了一篇大牛的文章。拿来分享一下,同时由发现了不少问题,欢迎大家讨论。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   概率密度分布为非正态分布的随机信号统称非高斯信号,在工程中通常用偏斜度S和峭度K两个参数来描述。高斯随机过程的偏斜度和峭度恒等于零,而非高斯随机过程的偏斜度和峭度至少有一个不恒为零,S和K的定义见附图
   偏斜度是衡量随机信号的分布偏离对称分布的歪斜程度,偏斜度不等于零的信号必定服从非对称分布。而峭度表征统计频率曲线接近分布中心时的大致状态,它不仅可以用来区分高斯和非高斯信号,而且还可进一步将非高斯信号分为亚高斯信号(峭度值小于零)和超高斯信号(峭度值大于零)。在工程仿真应用中(例如随机振动分析和疲劳可靠性分析等),常常要求模拟同时具有指定功率谱、偏斜度和峭度值大小的非高斯随机过程。引自“指定功率谱密度、偏斜度和峭度值下的非高斯随机过程数字模拟”一文(系统仿真学报)  
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   这里我想自己编一段程序来验证一下上边的结论,就是对一个高斯白噪声序列求一下它的偏斜度和峭度是否为零。先来看一下高斯白噪声序列的产生问题。在matlab里产生高斯白噪声可以用randn、wgn和normrnd,后2者都是功能上(内部都调用randn)更强,本质上产生高斯白噪声的就只有randn函数。在数字信号处理 (第二版  胡广书 清华大学出版社)这本书的45页这样介绍randn的“本文件可以用来产生均值为零、方差为1、服从高斯分布的白噪声信号u(n)其调用格式和rand相同.....”。下边就看看这个函数的一些问题:
>> mean(randn(1,100))
ans =
   -0.0235
>> mean(randn(1,1000))
ans =
   -0.0170
>> mean(randn(1,10000))
ans =
    0.0032
>> mean(randn(1,100000))
ans =
    0.0044
>> mean(randn(1,1000000))
ans =
  9.6919e-004
可以看到这里所指的均值为零,是有条件的即序列长度无穷大的时候。序列长度为10万的时候均值为0.0044,这个数说大不大,可是等于零还是非常有问题的。怎么解决这个问题呢?后来搜索一下看到有人解决了这个问题所以就拿来用了,为了验证用randn产生的高白噪声是一个高斯随机信号。根据附图的公式计算偏斜度S和峭度K看其是否为零,验证程序如下:
clear;
x=randn(1,10000);
x=x/std(x);
x=x-mean(x);
a=0; %均值
b=1; %方差
y=a+sqrt(b)*x;  %产生均值零,方差为1的高斯噪声
Y=fft(y);
subplot(121),plot(y); title('白噪声y')             %此处可以看到高斯白噪声的频谱还是白噪声
subplot(122),plot(abs(Y)); title('y的幅值谱')    %高斯函数的傅立叶变换还是高斯函数
S=mean(y.^3)./(mean(y.^2)).^1.5;%此处计算偏斜度
K=mean(y.^4)./(mean(y.^2)).^2-3;%此处计算峭度
>> mean(y)
ans =
  3.6515e-017
>> var(y)
ans =
    1.0000
>> S
S =
   -0.0018
>> K
K =
    0.0353
可以看到均值已经非常小,可以认为是零。方差挺准确,可惜计算的偏斜度和峭度就和零差距不小。序列长度取到100万的时候S= 0.0012,K=-2.8134e-004 是我的计算的程序有问题,还是什么原因导致的误差?欢迎高手批评指导

[ 本帖最后由 花如月 于 2007-12-20 18:45 编辑 ]

[attach]28297[/attach]

最新评论

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-20 12:05 , Processed in 0.030227 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部