SHARE
TWEET

Untitled

a guest Apr 3rd, 2019 84 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. % simulate1fnoise(number of samples,
  3. %                 signal amplitude ,
  4. %                 signal frequency ,
  5. %                 number of redundant sensors to simulate (each has independent noise),
  6. %                 starting probability of each update)
  7. % Outputs:
  8. %
  9. % pure_signal = physical signal we want to measure
  10. % ideal_measurement = the best we could expect, after denoising (additive
  11. %                                                       noise limited)
  12. % additive_noise    = the additive noise
  13. % acquisition_signal = Simulated measurement. What we would actually
  14. % obtain.
  15. % update_noise       = the step-like noise which we want to remove, due to
  16. %                      the updates
  17. % refUpdates         = time instants at which the reference is updated, and we
  18. %                      have step-function noise
  19.  
  20. % The information we have available in the real case is refUpdates and
  21. % acquisition_signal.
  22.  
  23.  
  24. nsamp = 1000; t = 1:nsamp; nSensors = 10;
  25. [pure_signal,ideal_measurement,additive_noise,acquisition_signal,update_noise,refUpdates] = simulate1fnoise(nsamp,4,0.01,nSensors,0.8);
  26.  
  27.  
  28. figure, subplot(1,2,1), plot(t,ideal_measurement(1,:),t,pure_signal(1,:),'r'),
  29.         title('Ideal case for measurement (no updates)'), legend({'Ideal Measurement', 'Pure Signal'})
  30.         xlabel('time')
  31.         subplot(1,2,2), plot(t,acquisition_signal(1,:),t,update_noise(1,:),'r'),
  32.         title('Actual measurement'), legend({'Acquisition', 'Step noise'})
  33.         xlabel('time')
  34.  
  35.  
  36. function [pure_signal,ideal_measurement,additive_noise,acquisition_signal,update_noise,refUpdates] = simulate1fnoise(nsamp,amp,freq,nWindows,probabilityUpdate)
  37.  
  38.  
  39. t = 1:nsamp;
  40. pure_signal = amp*sin(2*pi*freq*t).*[zeros(1,floor(nsamp/4)) hamming(floor(nsamp/2))' zeros(1,nsamp-(floor(nsamp/2) + floor(nsamp/4)))] ;
  41.  
  42. additive_noise = randn(nWindows,nsamp);
  43. ideal_measurement = pure_signal + additive_noise; % What one would ideally measure
  44. update_noise = zeros(nWindows,nsamp);   % Noise resulting from updates (the part that we want to discover/remove from our signal)
  45. acquisition_signal = zeros(nWindows,nsamp);    % Actual physical measurement
  46.  
  47. refUpdates = zeros(nWindows,nsamp);
  48.  
  49. for wnd = 1:nWindows
  50.     updateError = 0;
  51.     countNoUpdates = -1;
  52.     for idx = 1:nsamp
  53.         countNoUpdates = countNoUpdates+1;
  54.         acquisition_signal(wnd,idx) = ideal_measurement(wnd,idx) + updateError;
  55.         update_noise(wnd,idx) = updateError;
  56.         if rand > probabilityUpdate-(countNoUpdates*0.025)
  57.             refUpdates(wnd,idx) = 1;
  58.             updateError = updateError+additive_noise(wnd,idx);
  59.             countNoUpdates = 0;
  60.         end
  61.     end
  62. end
  63.  
  64. end
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top