summaryrefslogtreecommitdiff
path: root/macros/gauspuls.sci
blob: 621670b808702aa84a8b1445991e79d2191c287b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function [y]=gauspuls(t,fc,bw)
// Generates Gaussian-modulated sinusoidal pulses
// Calling Sequence
//	[y]=gauspuls(t,fc,bw)
//	[y]=gauspuls(t,fc)
//	[y]=gauspuls(t)
// Parameters
//	t: Real or complex valued vector or matrix
//	fc: Real non negative number or complex number
//	bw: Real positive number or complex number
// Description
//	This function returns a Gaussian RF pulse of unity amplitude at the times indicated in array t.
// Examples
// 1.	gauspuls(1,2,3)
//	ans= 1.427D-56
// 2.	gauspuls([1 2 3],1,1)
//	ans= 0.0281016    0.0000006    1.093D-14

if ( argn(2)<1 | argn(2)>3 ) then
 error ("Wrong number of input arguments.")
elseif (argn(2)==1)
    fc = 1e3; bw = 0.5;
elseif (argn(2)==2)
     bw = 0.5;
 end
 
 
 if (~isscalar(fc) | ~isreal(fc) | fc<0) then
     error('fc must be non-negative real scalar')
 end
  if (~isscalar(bw) | ~isreal(bw) | bw<=0) then
     error('bw must be positive real scalar')
 end
  y = exp (-t .* t / (2*(1 / (4*%pi^2 * (-(bw^2 * fc^2) / (8 * log (10 ^ (-6/20)))))))) .* cos (2*%pi*fc * t);

endfunction