whitenoise.m

来自「用matlab 实现强噪声中弱信号的提取」· M 代码 · 共 65 行

M
65
字号
clear
numberOfPoints = 10000;                                        % 采样点数
maxNumber = 1;                                                 % 采样时间

numberOfPictures = 5;

x = 0 : ((maxNumber)/(numberOfPoints-1)) : maxNumber;
x2 = 0 : ((maxNumber)/(numberOfPoints/2-1)) : maxNumber;
i = 1:numberOfPoints;


%  WHITE NOISE
whiteNoise = wgn(1,numberOfPoints,1);                         % 产生白噪声

figure(7);                                                    % 显示白噪声及各项数字特征

subplot(numberOfPictures,1,1);
plot(x,whiteNoise,'b-');
grid on;
axis([0,1,-5,5]);
title('高斯白噪声');

isWN = textWgn(whiteNoise,numberOfPoints/2,numberOfPoints)   % 测试是否是白噪声  1表示是 0表示不是

equWN  = equality(whiteNoise,numberOfPoints)
mVarWN = meanVar(whiteNoise,numberOfPoints)
varWN  = variance(equWN,mVarWN)                              % 计算白噪声的均值、均方值、方差

subplot(numberOfPictures,1,2);
plot(x,varWN,'k-');
grid on;
title('方差');

frequencyWN = fft(whiteNoise);                               % 计算白噪声的FFT变换

dfWN = (1/(maxNumber/(numberOfPoints-1)))/numberOfPoints;
nWN  = 0:numberOfPoints-1;
fWN  = nWN*dfWN;                                             % 将横轴变换到频域
 
 subplot(numberOfPictures,1,3);
 plot(fWN,abs(frequencyWN(nWN+1))*2/numberOfPoints,'r-');    % 修正纵轴,画出白噪声频谱
 grid on;
 title('频谱');

selfRelationWN = relation(whiteNoise,whiteNoise,equWN,equWN,varWN,varWN,numberOfPoints/2,numberOfPoints);  % 计算白噪声信号的自相关函数

subplot(numberOfPictures,1,5);
plot(x2,selfRelationWN,'k-');
grid on;
axis([0,1,-0.5,0.5]);
title('自相关函数');

powerWN = fft(selfRelationWN);                                         % 功率谱密度是自相关函数的傅立叶变换
pdfWN   = (1/(maxNumber/(numberOfPoints/2-1)))/(numberOfPoints/2);
pnWN    = 0:numberOfPoints/2-1;
pfWN    = pnWN*pdfWN;

subplot(numberOfPictures,1,4);
plot(pfWN,abs(powerWN(pnWN+1))*2/(numberOfPoints/2),'k-');             % 画出白噪声的功率谱密度
grid on;
axis([0,numberOfPoints/2,-0.05,0.05]);
title('功率谱密度');


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?