Random data signal

  • Follow


Hi everyone, currenly I'm working on this Fsk cde.How do I 
make my Data signal to be random?What code should I insert?
Please help me..
A=2;
fm=2000;
fm1=4000;
fs=1000;
t=0:0.00001:0.003;
f0=A.*sin(2*pi*fm*t);
subplot(3,2,1);
plot(t,f0);
title('F0 signal');
f1=A.*sin(2*pi*fm1*t);
subplot(3,2,2);
plot(t,f1);
title('F1 signal');
Data= (square(2*pi*fs*t));%formula for Data signal
for i=1:length(Data)
    Data(Data==-1)=0;
end;
subplot(3,2,3);
plot(t,Data);
title('Data signal');
x=f0.*Data;
Data1= (-square(2*pi*fs*t));
for i=1:length(Data1)
    Data1(Data1==-1)=0;
end;
y=f1.*Data1;
z=x+y;
subplot(3,2,4);
plot(t,z);
title('Fsk Signal');






0
Reply naimah_bentalib1 (21) 8/21/2007 2:52:08 AM

In article <fadk0o$lqp$1@fred.mathworks.com>,
Siti naimah - <naimah_bentalib@yahoo.com.sg> wrote:
>Hi everyone, currenly I'm working on this Fsk cde.How do I 
>make my Data signal to be random?

Well, what -kind- of randomness do you need? Uniform distribution?
Normal distribution? Poisson distribution?
-- 
   Okay, buzzwords only. Two syllables, tops.  -- Laurie Anderson
0
Reply roberson2 (8067) 8/21/2007 7:21:50 AM


I need Normal pseudorandom distribution.U know like 
11110010100011.How to make the array flip? 
0
Reply naimah_bentalib1 (21) 8/21/2007 9:18:59 AM

On Aug 21, 2:18 pm, "Siti naimah -" <naimah_benta...@yahoo.com.sg>
wrote:
> I need Normal pseudorandom distribution.U know like
> 11110010100011.How to make the array flip?

Seeing your previous post(s), I think you want 1's and 0's with equal
probability?
If so, rand(1,1000)>0.5 helps?

Krishna
http://dsplog.blogspot.com

0
Reply krishna.pillai (106) 8/21/2007 12:02:27 PM

 Krishna <krishna.pillai@gmail.com> wrote:
> Seeing your previous post(s), I think you want 1's and 
0's with equal
> probability?
> If so, rand(1,1000)>0.5 helps?
> Krishna
> http://dsplog.blogspot.com
> 

Thanks for your help but when I times the code above with 
my data signal,like this: Data = rand(1,1000)>0.5.*(square
(2*pi*fs*t));.In the command window,it appears Error using 
==> times
Matrix dimensions must agree.I'm really confuse.

0
Reply naimah_bentalib1 (21) 8/22/2007 2:31:56 AM

"Siti naimah -" <naimah_bentalib@yahoo.com.sg> wrote in
message <fag76s$c38$1@fred.mathworks.com>...
>  Krishna <krishna.pillai@gmail.com> wrote:
> > Seeing your previous post(s), I think you want 1's and 
> 0's with equal
> > probability?
> > If so, rand(1,1000)>0.5 helps?
> > Krishna
> > http://dsplog.blogspot.com
> > 
> 
> Thanks for your help but when I times the code above with 
> my data signal,like this: Data = rand(1,1000)>0.5.*(square
> (2*pi*fs*t));.In the command window,it appears Error using 
> ==> times
> Matrix dimensions must agree.I'm really confuse.
> 

well,

t=0:0.00001:0.003;
length(t)

ans =

301

You shouldn't really expect this to work..

what about rand(1,length(t))?

0
Reply Joachim 8/22/2007 2:44:39 AM

"Joachim " <a@b.com> wrote in message 
> well,
> 
> t=0:0.00001:0.003;
> length(t)
> ans =
> 
> 301
> 
> You shouldn't really expect this to work..
> what about rand(1,length(t))?
 
Thanks for your opinion.Unfortunately,after putting the 
code above,it still appears the same error.I've check the 
length of t before but I thought its workable.What more 
should I do?ohhh...so stress..my project due next week.Oh 
go,help me...The array must flip.My lecturer has not been 
much of help.
0
Reply naimah_bentalib1 (21) 8/22/2007 7:27:59 AM

 
"Joachim " <a@b.com> wrote in message 
> well,
> 
> t=0:0.00001:0.003;
> length(t)
> ans =
> 
> 301
> 
> You shouldn't really expect this to work..
> what about rand(1,length(t))?
 
Thanks for your opinion.Unfortunately,after putting the 
code above,it still appears the same error.I've check the 
length of t before but I thought its workable.What more 
should I do?ohhh...so stress..my project due next week.Oh 
god,help me...The array must flip.My lecturer has not been 
much of help.
 

0
Reply naimah_bentalib1 (21) 8/23/2007 3:03:58 AM

"Siti naimah -" <naimah_bentalib@yahoo.com.sg> writes:

>  
> "Joachim " <a@b.com> wrote in message 
>> well,
>> 
>> t=0:0.00001:0.003;
>> length(t)
>> ans =
>> 
>> 301
>> 
>> You shouldn't really expect this to work..
>> what about rand(1,length(t))?
>  
> Thanks for your opinion.Unfortunately,after putting the 
> code above,it still appears the same error.I've check the 
> length of t before but I thought its workable.What more 
> should I do?ohhh...so stress..my project due next week.Oh 
> god,help me...The array must flip.My lecturer has not been 
> much of help.

Then you must have another error.  Without seeing what you're using
for code, we have no idea what the error might be...

You might want to use "dbstop if error" at the command line.  You will
get a debugger prompt at the point of the error, which will let you
investigate the sizes of the variables at the time of the error.

-Peter
0
Reply boettcher (2302) 8/23/2007 2:37:42 PM

After using the 'dbstop if error',the error is still the 
same.It shows that error using=>> times.matix dimensions 
must agree.There is no other error.I know I cannot just 
multiply the rand together with the square wave but how?I 
can't think of any oher way.Below is my code you wanted to 
see.

A=2;
fm=1000;
fm1=2000;
fs=500;
t=0:0.00001:0.003;
f0=A.*sin(2*pi*fm*t);
subplot(3,2,1);
plot(t,f0);
%axis([0 0.019 -2 2])
title('F0 signal');
f1=A.*sin(2*pi*fm1*t);
subplot(3,2,2);
plot(t,f1);
%axis([0 0.019 -2 2])
title('F1 signal');
Data = (rand(1,100)>0.5).*(square(2*pi*fs*t));
for i=1:length(Data)
    Data(Data==-1)=0;
end;
subplot(3,2,3);
plot(t,Data);
%axis([0 0.019 -2 2])
title('Data signal');
x=f0.*Data;
Data1 = (-square(2*pi*fs*t));
for i=1:length(Data1)
    Data1(Data1==-1)=0;
end;
y=f1.*Data1;
z=x+y;
subplot(3,2,4);
plot(t,z);
%axis([0 0.019 -2 2])
title('Fsk Signal');


-Naimah-



0
Reply naimah_bentalib1 (21) 8/24/2007 3:15:10 AM

Siti naimah - wrote:
> After using the 'dbstop if error',the error is still the 
> same.It shows that error using=>> times.matix dimensions 
> must agree.There is no other error.I know I cannot just 
> multiply the rand together with the square wave but how?I 
> can't think of any oher way.Below is my code you wanted to 
> see.
....

Where precisely was the error?  After the break, examine each of the 
terms in the offending line for their size to see which isn't the 
conforming one(s).  Then, fix that/those...

--
0
Reply none1568 (6639) 8/24/2007 3:31:08 AM

The error is in line: Data = (rand(1,100)>0.5).*(square
(2*pi*fs*t)); I've seen the size and does not tally but my 
problem is I don't know how to fix that.
0
Reply naimah_bentalib1 (21) 8/24/2007 6:56:57 AM

Siti naimah - wrote:
> The error is in line: Data = (rand(1,100)>0.5).*(square
> (2*pi*fs*t)); I've seen the size and does not tally but my 
> problem is I don't know how to fix that.

� Data = (rand(1,100)>0.5).*(square(2*pi*fs*t));
??? Error using ==> .*
Matrix dimensions must agree.

� size(rand(1,100)>0.5)
ans =
      1   100
� size(square(2*pi*fs*t))
ans =
      1   301
�

It should be relatively clear what needs to be changed to make the two 
sizes consonant...

--
0
Reply none1568 (6639) 8/24/2007 1:45:50 PM

"Siti naimah -" <naimah_bentalib@yahoo.com.sg> wrote in message 
news:falifu$72b$1@fred.mathworks.com...
> After using the 'dbstop if error',the error is still the
> same.It shows that error using=>> times.matix dimensions
> must agree.There is no other error.I know I cannot just
> multiply the rand together with the square wave but how?I
> can't think of any oher way.Below is my code you wanted to
> see.
>
> A=2;
> fm=1000;
> fm1=2000;
> fs=500;
> t=0:0.00001:0.003;

*snip code*

> Data = (rand(1,100)>0.5).*(square(2*pi*fs*t));

*snip more code*

When you use .*, at least one of the following conditions must be true:

1) The two arrays you're using must be exactly the same size.
2) One or both of the arrays you're using must be scalar (size [1 1])

Your first array is (rand(1,100)>0.5).  What size is your first array?
Your second array is (square(2*pi*fs*t)).  What size is your second array?

Are your first and second arrays the same size?  Are one or both of them 
scalar (is their size [1 1])?  If the answers to both questions are no, you 
need to change either the way you define the first array or the way you 
define the second array (or both) so that they are the same size or one is a 
scalar.

Some functions you may find useful:

SIZE
LENGTH

Also note you can call RAND with a variable or the output of a function call 
instead of a number as the size of the random matrix to be created:

n = 10;
x = rand(1, n); % Creates a 1-by-10 random matrix
y = rand(size(x)); % Creates a random matrix the same size as x

-- 
Steve Lord
slord@mathworks.com 


0
Reply slord (13278) 8/24/2007 1:51:01 PM

I try the method for one or both arrays to be scalar,i.e: 
size[1,1] but it's not workable for my square wave because 
my data signal cannot be only one digit so I use the first 
method,i.e: 2 arrays must be the same size.


t = 0:0.001:0.019;
fs =500;
n = 20;
y = rand(1,n); %Creates a 1-by-20 random matrix
d = y.*(square(2*pi*fs*t)); %Same matrix as y 
plot(t,d);

However after I tried out the basic example above,I can't 
get the square wave signal.Instead it looks like 
triangular wave.How come?When I comment out the y and 
declare the 1's and 0's like below,I still don't get a 
perfect square wave. 

t = 0:0.001:0.019;
fs =500;
n = 20;
x= [1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0]; 
%y = rand(1,n); %Creates a 1-by-20 random matrix
d = x.*(square(2*pi*fs*t)); %Same matrix as y 
plot(t,d);
0
Reply naimah_bentalib1 (21) 8/27/2007 8:01:08 AM

Siti naimah - wrote:
> I try the method for one or both arrays to be scalar,i.e: 
> size[1,1] but it's not workable for my square wave because 
> my data signal cannot be only one digit so I use the first 
> method,i.e: 2 arrays must be the same size.
> 
> 
> t = 0:0.001:0.019;
> fs =500;
> n = 20;
> y = rand(1,n); %Creates a 1-by-20 random matrix
> d = y.*(square(2*pi*fs*t)); %Same matrix as y 
> plot(t,d);
> 
> However after I tried out the basic example above,I can't 
> get the square wave signal.Instead it looks like 
> triangular wave.How come?When I comment out the y and 
> declare the 1's and 0's like below,I still don't get a 
> perfect square wave. 
> 
> t = 0:0.001:0.019;
> fs =500;
> n = 20;
> x= [1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0]; 
> %y = rand(1,n); %Creates a 1-by-20 random matrix
> d = x.*(square(2*pi*fs*t)); %Same matrix as y 
> plot(t,d);

Try

 > t = 0:0.001:0.019;
 > fs =500;
 > n = 20;
 > x= [1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0];
   s = square(2*pi*fs*t);
 > d = x.*(square(2*pi*fs*t)); %Same matrix as y
   plot(t,x,'r'); hold on; plot(t,x,'g')

and see if that doesn't help understanding...

--

0
Reply none1568 (6639) 8/27/2007 1:12:00 PM

Thank you.I've tried like what you say and after 
increasing the increment to a 1-by-200 matrix,I get the 
square wave signal.But when I want to make the square wave 
random and insert--> y = rand(1,n); ,it becomes like some 
noise wave.Is there any other code that can make my y min 
to be '-1' and y max '1' come out randomly?I tried all 
sorts of code already.

t = 0:0.0001:0.0199;
fs =100;
n = 200;
y = rand(1,n); %Creates a 1-by-200 random matrix
s = square(2*pi*fs*t);
plot(t,y);

  
--Naimah--
0
Reply naimah_bentalib1 (21) 8/28/2007 3:05:43 AM

Siti naimah - wrote:
> Thank you.I've tried like what you say and after 
> increasing the increment to a 1-by-200 matrix,I get the 
> square wave signal.But when I want to make the square wave 
> random and insert--> y = rand(1,n); ,it becomes like some 
> noise wave.Is there any other code that can make my y min 
> to be '-1' and y max '1' come out randomly?I tried all 
> sorts of code already.

Someone provided that "trick" earlier but you seemed to have dropped 
it...try

  y = rand(1,n)>0.5;

for equi-probability.  Note rand() is uniform and iirc you asked for a 
normal distribution in an earlier post. randn() is the normal generator...

--
0
Reply none1568 (6639) 8/28/2007 1:00:54 PM

Yes, I tried already but the space between the signals is 
too near.How do I increase the space in between the 
signals so that it will look more clear.and what should I 
do if i want to reduce the no of cycles of the square wave 
to 10.Is it by making a 1-by-10 matrix?

 t = 0:0.0001:0.0199;
fs =100;
n = 200;
y = randn(1,n)>0.5; %Creates a 1-by-200 random matrix
d = y.*(square(2*pi*fs*t)); 
plot(t,d); 
0
Reply naimah_bentalib1 (21) 8/29/2007 2:38:17 AM

Siti naimah - wrote:
> Yes, I tried already but the space between the signals is 
> too near.How do I increase the space in between the 
> signals so that it will look more clear.and what should I 
> do if i want to reduce the no of cycles of the square wave 
> to 10.Is it by making a 1-by-10 matrix?

Well, to get 10 cycles at some frequency would require the length of the 
time series to be the proper length to match.  The resolution would 
depend on the number of points.

It isn't at all clear what it is you're driving at here -- now that 
you're beginning to get some familiarity w/ the nuts and bolts of 
Matlab, you need to figure out what it is you're really after -- is it a 
randomly changing frequency, a random distribution of on/off time 
periods, what...

Once you have that defined clearly and unambiguously, then you can use 
what you've learned to implement it.

I really don't know what the goal is from what you've posted so far.  I 
didn't really expect what you tried to be what you expected, but I don't 
have enough of a picture of what you're expecting to tell you how to 
proceed at this point...

--
0
Reply none1568 (6639) 8/29/2007 3:49:10 AM

Ok.To have a clear picture for you,I've send the figure of 
what I expect to your email.
0
Reply naimah_bentalib1 (21) 8/29/2007 4:36:33 AM

20 Replies
194 Views

(page loaded in 0.233 seconds)

Similiar Articles:


















7/22/2012 5:25:44 AM


Reply: