声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 6519|回复: 11

[编程技巧] 如何用matlab生成干扰信号(非零均值白噪声)

[复制链接]
发表于 2009-1-8 23:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
如何用matlab生成干扰信号,非零均值的白噪声?多谢!
回复
分享到:

使用道具 举报

 楼主| 发表于 2009-1-8 23:09 | 显示全部楼层
期待回答!我想生成干扰信号加在正弦信号里面,组成污染后的信号!
发表于 2009-1-9 08:53 | 显示全部楼层

回复 沙发 luyunjun023 的帖子

搜索一下置顶帖和精华帖。
 楼主| 发表于 2009-1-9 12:11 | 显示全部楼层

回复 板凳 sogooda 的帖子

多谢主任!!
 楼主| 发表于 2009-1-9 12:40 | 显示全部楼层
http://forum.vibunion.com/thread-49191-1-8.html
高斯信号和非高斯信号的问题
最近看到这个问题,我就查了一些相关的资料。后来发现即使在百度和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 是我的计算的程序有问题,还是什么原因导致的误差?欢迎高手批评指导
 楼主| 发表于 2009-1-14 18:49 | 显示全部楼层
问题还是没有解决。
我看别人生成的很乱,我的还是接近正弦信号!
发表于 2009-2-1 11:54 | 显示全部楼层

请问你的问题解决了吗?

我也正想知道答案。如果有什么建议请发到我的邮箱----zhangyang9842@126.com
发表于 2009-2-1 21:05 | 显示全部楼层
原帖由 luyunjun023 于 2009-1-14 18:49 发表
...我看别人生成的很乱,我的还是接近正弦信号!

LZ怎样产生程序? 接近正弦信号?
发表于 2009-2-2 08:12 | 显示全部楼层
推荐一篇文章,里面讲的很细!
《控制系统中随机信号的仿真与分析》 系统 仿 真 学 报 Vol. 18 No. 7, July, 2006  2014-2016 。
可以参考一下!
 楼主| 发表于 2009-2-10 14:34 | 显示全部楼层
thank you!去看看
发表于 2009-2-10 20:16 | 显示全部楼层

回复 6楼 luyunjun023 的帖子

应该是程序有误。
发表于 2009-11-9 14:51 | 显示全部楼层
用awgn就可以直接添加高斯白噪声
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-7-1 11:58 , Processed in 0.056204 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表