Random pulse generator
    19 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Néstor Monedero
 il 19 Ott 2011
  
    
    
    
    
    Commentato: sneha j
 il 3 Mag 2021
            Hello,
I'm new in Simulink and i trying to make a pulse random generator. Pulses have amplitude (+10 & -10) and width (1 ms). The signal has to be non periodic, i mean, pulses has to appear by a random series. how can i do it? I apprecitate any help. The begining of my project depend of this signal.
Thanks. Néstor.
3 Commenti
  Azzi Abdelmalek
      
      
 il 29 Ott 2012
				Check the second image (modified)
set the Amplitude of the pulse generator to 2 and substract 1
Risposta accettata
  Azzi Abdelmalek
      
      
 il 27 Ott 2012
        
      Modificato: Azzi Abdelmalek
      
      
 il 27 Ott 2012
  
      use this block

the function is
function y = fcn(u)
%#codegen
id=rand(1)
if id>0.5 & u==0
  y=1
else
  y=0
end
or easier

%
0 Commenti
Più risposte (2)
  Fangjun Jiang
      
      
 il 19 Ott 2011
        Go to Simulink Sources library, there is the Random Number block and the Uniform Random Number block.
The output of the Uniform Random Number is between 0 and 1, so you'll need to use Relational Operator block to compare it with constant such as 0.1 and 0.9, and then use Switch block to output the +10 or -10 or 0 pulse value.
3 Commenti
  Fangjun Jiang
      
      
 il 21 Ott 2011
				You can compare the random number with a constant, e.g. 0.9 and then add a zero-order holder block.
  Néstor Monedero
 il 28 Nov 2011
        2 Commenti
  sneha j
 il 3 Mag 2021
				hi, there is a bug in ur code. 
In the case that u(i)<-0.9, y(i) sets to -1 in the first if-block. 
But wen it executes the 2nd if-block - if gets overwritten by y(i)=0 as u(i)<0.9, so it executes the else part of the block.
U need to club the the first if block with the 2nd if-else block into one if block as follows:
if(u(i)<-0.9)
    y(i)=-1;
else if(u(i)>0.9)
    y(i)=1;
else
    y(i)=0;
end
Hope it works well.
  sneha j
 il 3 Mag 2021
				hi Nestor, sorry i jus realised that the else if block doesnt work, so here is a workaround:
if(u<-0.5)
    y=-10;
else
    y=0;
end
if(u>0.5)
    y=10;
end

Vedere anche
Categorie
				Scopri di più su Sources in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!