How to Add random noise to a signal

351 vues (au cours des 30 derniers jours)
lady bird
lady bird le 20 Mai 2015
Commenté : Alper le 11 Mar 2025
hello all
please can ou help me out adding a noise signal to my system.
i tried adding a sinus function , but i would like to add a random noise signal rather than the sinus function. I'm running simulation from 1 to 3000
if k>1000 & k<2000
dk(k)=sin(12*k*pi*ts);
x=A*x+B*u(k)+B*dk(k);
else
dk(k)=0;
x=A*x+B*u(k);
end
Thank you so much
Best regards
  2 commentaires
chris matthew
chris matthew le 14 Mar 2020
Déplacé(e) : DGM le 4 Mar 2023
how to add noise to audio not for signal
Image Analyst
Image Analyst le 14 Mar 2020
Déplacé(e) : DGM le 4 Mar 2023
What does that mean? Audio IS a signal. You can't add noise to audio without adding it to the signal that defines the audio waveform.

Connectez-vous pour commenter.

Réponses (6)

Thorsten
Thorsten le 20 Mai 2015
x = linspace(-2*pi, 2*pi);
plot(sin(x) + 0.5*rand(size(x)))
  6 commentaires
Tuhin Choudhury
Tuhin Choudhury le 16 Mar 2020
Modifié(e) : Tuhin Choudhury le 16 Mar 2020
Hi,
Thanks. This would be more of a flexible scaling of the noise w.r.t the input signal.
BR- Tuhin
Enac
Enac le 10 Oct 2024
Hi,
This is a great solution. I want to point a subtle improvement. Using this algorithm you would end up with a noisy signal that is always above the original one. This is because rand() gives random numbers ranging from 0 to 1.
Usually, when you want to add noise to a given data you want the noisy function to be centered in the original. To do so you just need to generate random numbers going from -1 to 1. Simply replace
rand(size(noise_free_signal))
with
2*(rand(size(noise_free_signal))-0.5)

Connectez-vous pour commenter.


Image Analyst
Image Analyst le 20 Mai 2015
So just use rand() instead of sin().
  4 commentaires
Prajakta Yeola
Prajakta Yeola le 29 Oct 2017
Can we use the same code if audio signal is .wav file? i.e. if x is a .wav file
Image Analyst
Image Analyst le 29 Oct 2017
Sure, just figure out the amplitude and add it
yNoisy = yOriginal + amplitude * rand(1, length(yOriginal));

Connectez-vous pour commenter.


KL
KL le 20 Mai 2015
Did you check the gaussian noise function?
  2 commentaires
lady bird
lady bird le 20 Mai 2015
i found a awgn function but i dont know how to use it in my case?
KL
KL le 20 Mai 2015
There's a difference between wgn() and awgn(). With the latter, you add noise throughout the whole range. I understand you want to add noise between certain time intervals. So in this case, I would suggest to use wgn(). At the moment I do not have the toolbox to use this function. Anyhow you shall use this function to calculate the noiseSignal variable according to @Image Analyst's code.

Connectez-vous pour commenter.


Aparna Gupta
Aparna Gupta le 21 Juin 2017
Can anyone please help me with the code to add awgn noise to an eeg signal,which i have taken from a database and the file is of .mat type?
  2 commentaires
Image Analyst
Image Analyst le 21 Juin 2017
Yes, probably. You can post the code in a new question.
Alper
Alper le 11 Mar 2025
xn=awgn(x,20), SNR=20 dB

Connectez-vous pour commenter.


Mohammad Sohail Khan
Mohammad Sohail Khan le 3 Nov 2017
Modifié(e) : DGM le 4 Mar 2023
t = 0:pi/100:40;
x = cos(pi/10*t)+0.5*randn(size(t));
plot(t,x)
Then you know where pi/2, 3pi/4 etc are.

Adewale Obaro
Adewale Obaro le 24 Sep 2018
Modifié(e) : DGM le 4 Mar 2023
N = 1000;
t = 0:1/N:2;
x = sin(2*pi*5*t);
Noise = x + randn(1,N)';
plot(t,Noise);
title('Noise in the Amplitude interval (0,0,1,0)');
ylabel('Amplitude [m]')
xlabel('Time [s]')

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by