永发信息网

求高斯白噪声的matlab源程序,,

答案:2  悬赏:20  手机版
解决时间 2021-11-21 14:29
求高斯白噪声的matlab源程序,,
最佳答案
#include
#include
#include
#include
#define PI 3.1415926
#define FRAME 1000
#define VARIANCE 1.0
double WhiteNoise[FRAME];
int PdfCount[16];
//白噪声子程序
void F_CreatWhiteNoise(double fSigma)
{
int i;
int nTemp;
double RandomData1[FRAME],RandomData2[FRAME];
srand((unsigned)time(NULL));
for(i=0;i {
do
{
nTemp = rand();
}
while((nTemp==0)||(nTemp==RAND_MAX));
RandomData1[i]=(double)nTemp/(double)RAND_MAX;
}
for(i=0;i {
do
{
nTemp = rand();
}
while((nTemp==0)||(nTemp==RAND_MAX));
RandomData2[i]=(double)nTemp/(double)RAND_MAX;
}
for(i=0;i {
WhiteNoise[i] = sqrt(-2.0*fSigma*log(RandomData1[i]))*cos(2.0*PI*RandomData2[i]);
}
}
double F_ComputeMean(double* pData ,int nCount)
{
int i;
double LSum,LMean;
LSum = 0.0;
for(i=0;i {
LSum += *pData;
pData ++;
}
LMean = LSum/(double)nCount;
return LMean;
}
double F_ComputeVar(double* pData ,int nCount)
{
int i;
double LSum,LPower,LData;
double LMean,LVariance;
LSum = 0.0;
LPower = 0.0;
for(i=0;i {
LData = *pData;
LSum += LData;
LPower += LData*LData;
pData ++;
}
LMean = LSum/double(nCount);
LVariance = LPower/double(nCount) - LMean*LMean;
return LVariance;
}
void F_ComputePdf(void)
{
int i;
double LData;
double LSigma,LMean;
LMean = F_ComputeMean(&WhiteNoise[0],FRAME);
LSigma = sqrt(F_ComputeVar(&WhiteNoise[0],FRAME));
for(i=0;i<16;i++)
{
PdfCount[i] = 0;
}
for(i=0;i {
LData = WhiteNoise[i];
if(LData < (LMean - 3.5*LSigma))
{
PdfCount[0] ++;
}
if((LData>(LMean-3.5*LSigma)) && (LData<(LMean-3.0*LSigma)))
{
PdfCount[1] ++;
}
if((LData>(LMean-3.0*LSigma)) && (LData<(LMean-2.5*LSigma)))
{
PdfCount[2] ++;
}
if((LData>(LMean-2.5*LSigma)) && (LData<(LMean-2.0*LSigma)))
{
PdfCount[3] ++;
}
if((LData>(LMean-2.0*LSigma)) && (LData<(LMean-1.5*LSigma)))
{
PdfCount[4] ++;
}
if((LData>(LMean-1.5*LSigma)) && (LData<(LMean-1.0*LSigma)))
{
PdfCount[5] ++;
}
if((LData>(LMean-1.0*LSigma)) && (LData<(LMean-0.5*LSigma)))
{
PdfCount[6] ++;
}
if((LData>(LMean-0.5*LSigma)) && (LData {
PdfCount[7] ++;
}
if((LData>LMean) && (LData<(LMean+0.5*LSigma)))
{
PdfCount[8] ++;
}
if((LData>(LMean+0.5*LSigma)) && (LData<(LMean+1.0*LSigma)))
{
PdfCount[9] ++;
}
if((LData>(LMean+1.0*LSigma)) && (LData<(LMean+1.5*LSigma)))
{
PdfCount[10] ++;
}
if((LData>(LMean+1.5*LSigma)) && (LData<(LMean+2.0*LSigma)))
{
PdfCount[11] ++;
}
if((LData>(LMean+2.0*LSigma)) && (LData<(LMean+2.5*LSigma)))
{
PdfCount[12] ++;
}
if((LData>(LMean+2.5*LSigma)) && (LData<(LMean+3.0*LSigma)))
{
PdfCount[13] ++;
}
if((LData>(LMean+3.0*LSigma)) && (LData<(LMean+3.5*LSigma)))
{
PdfCount[14] ++;
}
if(LData>(LMean+3.5*LSigma))
{
PdfCount[15] ++;
}
}
}
////////////////////////////////////////////////////////////////////
void main(void)
{
FILE *fp1,*fp2;;
int i;
F_CreatWhiteNoise(VARIANCE);
F_ComputePdf();
//存储噪声的采样值
if((fp1 = fopen("noise.dat","w+")) == NULL)
{
printf("Open file error !");
exit(1);
};
for(i=0;i {
fprintf(fp1,"%d %f\n",i,WhiteNoise[i]);
}
fclose(fp1);
//存储噪声的概率分布
if((fp2 = fopen("gausspdf.dat","w+")) == NULL)
{
printf("Open file 'gausspdf.dat' error !");
exit(1);
};
for(i=0;i<16;i++)
{
fprintf(fp2,"%d %d\n",i-7,PdfCount[i]);
}
fclose(fp2);
全部回答
y=randn(1,2500);
y=y/std(y);
y=y-mean(y);
a=0;
b=sqrt(5);
y=a+b*y;

就得到了 N ( 0, 5 ) ,均值为0,方差为5的高斯白噪声序列。

MATLAB中产生高斯白噪声的两个函数
MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。

1. WGN:产生高斯白噪声
y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。
y = wgn(m,n,p,imp) 以欧姆(Ohm)为单位指定负载阻抗。
y = wgn(m,n,p,imp,state) 重置RANDN的状态。

在数值变量后还可附加一些标志性参数:
y = wgn(…,POWERTYPE) 指定p的单位。POWERTYPE可以是'dBW', 'dBm'或'linear'。线性强度(linear power)以瓦特(Watt)为单位。
y = wgn(…,OUTPUTTYPE) 指定输出类型。OUTPUTTYPE可以是'real'或'complex'。

2. AWGN:在某一信号中加入高斯白噪声
y = awgn(x,SNR) 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。
y = awgn(x,SNR,SIGPOWER) 如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER为'measured',则函数将在加入噪声之前测定信号强度。
y = awgn(x,SNR,SIGPOWER,STATE) 重置RANDN的状态。
y = awgn(…,POWERTYPE) 指定SNR和SIGPOWER的单位。POWERTYPE可以是'dB'或'linear'。如果POWERTYPE是'dB',那么SNR以dB为单位,而SIGPOWER以dBW为单位。如果POWERTYPE是'linear',那么SNR作为比值来度量,而SIGPOWER以瓦特为单位。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
轿车手自一体的工作原理是什么?
被360标记为诈骗电话怎么解决
明辉网咖地址在什么地方,我要处理点事!
有没有类似重生之天才符咒师的文 女主重生奋
这是海南宝吗,价值多少钱?
商场人员密度0.43-0.6什么时候选0.6
九眼天石为什么遇冷变白,预热颜色变深,洗澡
牛家观山地址在什么地方,想过去办事
安徽有养鹅厂吗?
请问这尺子的名字叫什么,一般哪里有卖的,谢
通假的常用通假例句
DNF60级召唤怎么加点?
09年网络流行语中,流行句式:“哥吃的不是面
“癫张狂素”指的是哪两位书法家,谈谈你对他
百度云上的bt种子怎么解析
推荐资讯
为什么我的中高配电脑玩dolphi
巴林右旗鸿鹰招待所地址在什么地方,我要处理
有一首歌词 什么喔喔喔,好甜蜜是什么歌。我
求暗黑破坏神1地狱之火汉化包怎么汉化
椰蓉红豆鲜奶麻薯的做法步骤图,怎么做好吃
什么房子最好?从古代皇帝的卧室解读风水
CUBE地址在什么地方,想过去办事,
2018年教师资格证认定
交通银行atm(万源路航天万源广场B1层)地址好
世界上的各种文化变得日趋相同还是不同
怎样求出12和30的最小公倍数求解答
中客酒店(青岛正阳路店)地址好找么,我有些事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?