怎么用matlab给声音加入噪音?

怎么用matlab给声音加入噪音?,第1张

在matlab中无论是wgn还是awgn函数,实质都是由randn函数产生的噪声。即,wgn函数中调用了randn函数,而awgn函数中调用了wgn函数。

根据awgn的实现代码可以知道“向已知信号添加某个信噪比(SNR)的高斯白噪声”,

即:awgn(x,snr,’measured’,'linear’),命令的作用是对原信号x添加信噪比(比值)为SNR的噪声,在添加之前先估计信号x的强度。

直接对原始信号添加噪声:

y=x+rand(length(x),1)

y=x+randn(length(x),1))

1、启动matlab后,启动此工具,添加下图所示模块。添加模块后,双击打开设置界面后,点击下方help,查看该功能说明。

2、对于下图2两个参数分别表示功率谱密度和随机数起始,如果不改变seed起始,每次使用此模块生成的高斯白噪声,不会发生任何变化。

3、所以,simulink中想生成多大功率谱密度,直接设置参数即可,这里设置为1,tc设为1*10e-3,并生成了图像。

4、而对于wgn函数,需要用第四个参数控制单位,如果不进行设置则单位为dBW,需要进行设置,将其改为线性W这一单位,具体使用如下图所示。

5、实际使用时,对参数进行相应设置,即可达到和使用前述模块同样的效果。输出使用该函数生成的噪声图像。

clear all

close all

x=0:0.2:10

data1=sin(x)

plot(x,data1)

hold on

data2=awgn(data1,10*log10(0.05))

plot(x,data2,'r-')

hold off

扩展资料

matlab添加白噪声叠加到信号:

function [Y,NOISE] = noisegen(X,SNR)

% noisegen add white Gaussian noise to a signal.

% [Y, NOISE] = NOISEGEN(X,SNR) adds white Gaussian NOISE to X.  The SNR is in dB.

NOISE=randn(size(X))

NOISE=NOISE-mean(NOISE)

signal_power = 1/length(X)*sum(X.*X)

noise_variance = signal_power / ( 10^(SNR/10) )

NOISE=sqrt(noise_variance)/std(NOISE)*NOISE

Y=X+NOISE

其中X是纯信号,SNR是要求的信噪比,Y是带噪信号,NOISE是叠加在信号上的噪声。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11875685.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存