170613 matlab原始信号中加入高斯白噪声的分析

高斯白噪音的定义、概念及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')
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GuokLiu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值