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 comentarios

Azzi Abdelmalek
Azzi Abdelmalek el 27 de Oct. de 2012
Editada: Azzi Abdelmalek el 27 de Oct. de 2012
What is the maximale distance between two impulses?
Néstor Monedero
Néstor Monedero el 29 de Oct. de 2012
Hi Azzi, The maximale distance between two impulses may be 2 ms, for example. The idea is that: the distance is as close as possible. I achieve to do this pulse random generator with these blocks: A uniform random number, a matlab function that convert this pulses in other with amplitude +1/-1.
If you need more information, please, give me question. Néstor
Azzi Abdelmalek
Azzi Abdelmalek el 29 de Oct. de 2012
Check the second image (modified)
set the Amplitude of the pulse generator to 2 and substract 1

Iniciar sesión para comentar.

 Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 27 de Oct. de 2012
Editada: Azzi Abdelmalek el 27 de Oct. de 2012

0 votos

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
%

Más respuestas (2)

Fangjun Jiang
Fangjun Jiang el 19 de Oct. de 2011

1 voto

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 comentarios

Néstor Monedero
Néstor Monedero el 21 de Oct. de 2011
Hi, yes i can use both, but, how can i control the width of pulses?
I need a signal of pulses of the same width (1ms) and pulses has to appear randomly on time.
Thanks.
Fangjun Jiang
Fangjun Jiang el 21 de Oct. de 2011
You can compare the random number with a constant, e.g. 0.9 and then add a zero-order holder block.
Fangjun Jiang
Fangjun Jiang el 28 de Nov. de 2011
See update.

Iniciar sesión para comentar.

Néstor Monedero
Néstor Monedero el 28 de Nov. de 2011

0 votos

I try to simulate random pulse generator using "uniform random number" plus a Matlab function. The code of the Matlab function is:
function y = fcn(u)
%#codegen
n=length(u);
y=[1:n];
for i=1:n
if(u(i)<-0.9)
y(i)=-1;
end
if(u(i)>0.9)
y(i)=1;
else
y(i)=0;
end
end
The result is not what i want. I only obtain pulses with positive amplitude. I need two kind of pulses: positive and negative. what i am doing wrong? any idea? Please i need to build this signal to advanced in my project. Thanks in advance. Néstor.

2 comentarios

sneha j
sneha j el 3 de Mayo de 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
sneha j el 3 de Mayo de 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

Iniciar sesión para comentar.

Preguntada:

el 19 de Oct. de 2011

Comentada:

el 3 de Mayo de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by