home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C!T ROM 5
/
ctrom5b.zip
/
ctrom5b
/
WINDOWS
/
DIVERSEN
/
MATHS171
/
SINW.M
< prev
next >
Wrap
Text File
|
1993-03-23
|
1KB
|
63 lines
function y=sinw(npoints, f0, df, ph0)
% y=sinw(num_of_points, num_of_cycles, delta_cycles, initial_phase)
% create frequency hopping sine wave composed of segements of linear
% FM sine waves
%
% num_of_points - number of points in each segment
% f0 - inital frequency
% df - frequency deviation
% ph0 - initial phase
%
% Example: sinw(256, 2, 3) generates a linear FM signal
%
% S.Halevy 7/31/92
% Copyright (c) 1992 by the MathWizards
if nargin < 1
error('insufficient arguments')
end
npoints=npoints(:); % make sure it is a col vector
[mp,np]=size(npoints);
if nargin < 4
ph0=zeros(mp,np); % zero initial phase - radians
else
ph0=ph0(:);
[m0,n0]=size(ph0);
if m0 ~= mp | n0 ~= np
error('initial phase - dimension error')
end
end
if nargin < 3
df=zeros(mp,np); % no frequency deviation
else
df=df(:);
[m0,n0]=size(df);
if m0 ~= mp | n0 ~= np
error('frequency deviation - dimension error')
end
end
if nargin < 2
f0=ones(mp,np); % single cycle
else
f0=f0(:);
[m0,n0]=size(f0);
if m0 ~= mp | n0 ~= np
error('cycles - dimension error')
end
end
y=[];
pi2=atan(1.0)*8;
for i1=1:mp
n = npoints(i1);
t = (0:(n-1))/n; % time
ph1 = (f0(i1)+0.5*df(i1)*t).*t; % phase
ph1 -= floor(ph1); % reduce roundoff errors
y=[y sin(pi2*ph1+ph0(i1))];
end