高斯白噪音的定义、概念及matlab实现
matlab调整子图距离
设置figure的大小与位置
坐标轴上下限设置
如何在matlab里实现FFT变换
Python代码实现matlab中添加高斯白噪音awgn的方法
结论
- 随着信噪比的增强,混合数据的频率分布逐渐与高斯白噪声一致
- 随着信噪比的增强,混合数据的幅值频谱逐渐混乱不清
- 信噪比在-4-10内的幅值频谱特性还清晰可辨
plot_gauss.m
% y = awgn(x,SNR)
% 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。
% y = awgn(x,SNR)
function plot_noise(inter)
% clear,clc;
Fs = 128;% 采样频率
T = 1/Fs; % 采样时间
L = 256; % 信号长度
t = (0:L-1)*T;% 时间
N = 2^nextpow2(L);
y=5 + 7*cos(2*pi*15*t - 30*pi/180) + 3*cos(2*pi*40*t - 90*pi/180);
Noise = inter;
x=wgn(1,N,Noise);
i = y+x;
% i=awgn(y,2);
%%
% subplot('position',[0.25,0.2,0.5,0.2]);
subplot(331)
plot(y);
ylabel('幅值')
% xlabel('频率(Hz)')
title('原始振动数据')
subplot(333)
%绘制直方图-1
hist(y,10); hold on;
%求出概率密度函数参数
[mu,sigma]=normfit(y);
%绘制概率密度函数
[n,x_y]=hist(y,10);
curve_i=normpdf(x_y,mu,sigma);
%处理一下数据,使得密度函数和最高点对齐
curve_i=curve_i/max(curve_i)*max(n);
plot(x_y,curve_i,'r-');
title('原始数据-频率分布直方图')
%%
% subplot('position',[0.25,0.5,0.5,0.2]);
subplot(334)
plot(x);
ylabel('幅值')
title('高斯噪声数据')
subplot(336)
%绘制直方图-2
hist(x,10); hold on;
%求出概率密度函数参数
[mu,sigma]=normfit(x);
%绘制概率密度函数
[n,x_x]=hist(x,10);
curve_i=normpdf(x_x,mu,sigma);
%处理一下数据,使得密度函数和最高点对齐
curve_i=curve_i/max(curve_i)*max(n);
plot(x_x,curve_i,'r-');
title('高斯数据-频率分布直方图')
%%
% subplot('position',[0.25,0.8,0.5,0.2]);
subplot(337)
plot(i);
ylabel('幅值')
title('混合生成数据')
subplot(339)
%绘制直方图-3
hist(i,10); hold on;
%求出概率密度函数参数
[mu,sigma]=normfit(i);
%绘制概率密度函数
[n,x_i]=hist(i,10);
curve_i=normpdf(x_i,mu,sigma);
%处理一下数据,使得密度函数和最高点对齐
curve_i=curve_i/max(curve_i)*max(n);
plot(x_i,curve_i,'r-');
title('混合数据-频率分布直方图')
%%
N = 1024;
Fs = 128;
fft_y = fft(y,N)/N*2;
A_y = abs(fft_y);
f_y = Fs/N*(0:1:N-1); %频率
%% 原始振动数据的幅值频谱
% subplot('position',[0.25,1.1,0.5,0.2]);
subplot(332)
plot(f_y(1:N/2),A_y(1:N/2)); %函数fft返回值的数据结构具有对称性,因此我们只取前一半
title('原始振动数据的幅值频谱')
% xlabel('频率(Hz)')
ylabel('幅值')
%% 高斯白化噪声的幅值频谱
fft_x = fft(x,N)/N*2;
A_x =abs(fft_x);
% subplot('position',[0.25,1.4,0.5,0.2])
subplot(335)
plot(f_y(1:N/2),A_x(1:N/2)); %函数fft返回值的数据结构具有对称性,因此我们只取前一半
title('高斯白化噪声的幅值频谱')
% xlabel('频率(Hz)')
ylabel('幅值')
%% 加入高斯白化噪声的幅值频谱
fft_i = fft(i,N)/N*2;
A_i =abs(fft_i);
% subplot('position',[0.25,1.7,0.5,0.2]);
subplot(338)
plot(f_y(1:N/2),A_i(1:N/2)); %函数fft返回值的数据结构具有对称性,因此我们只取前一半
title('加入高斯白化噪声的幅值频谱')
% % xlabel('频率(Hz)')
ylabel('幅值')
%%
idx = (inter+6)/2;
suptitle(strcat('The noise is','→',num2str(idx),' dBn'))
% suptitle(num2str(idx))
A=getframe(gcf);
imwrite(A.cdata,strcat('noise_',num2str(idx),'.png')) %存储调整过大小的图片
loops_for_plot.m
%%
figure;
set(gcf,'unit','centimeters','position',[10 5 30 15])
set(gcf,'color','white'); %设定figure的背景颜色
for i=-50:50
num = 2*i-6;
plot_gauss(num)
disp(i);
end
%%
% figure;
% set(gcf,'unit','centimeters','position',[20 0 10 30])
% set(gcf,'color','white'); %设定figure的背景颜色
% subplot('position',[0.25,0.25,0.5,0.25]);
% plot(0:.1:10,sin(0:.1:10));
% title('edf')
% subplot('position',[0.25,0.6,0.5,0.25]);
% plot(0:.1:10,cos(0:.1:10));
% title('abc')