blob: 8c3d6892d3ce483797549ba104d82cbacea7e175 (
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
|
function [y]=sawtooth (t,width)
// Generates a Sawtooth wave
// Calling Sequence
// [y]=sawtooth(t)
// [y]=sawtooth(t,width)
// Parameters
// t: Real valued vector or matrix
// width: Real number between 0 and 1
// Description
// This function returns a sawtooth wave with period 2*pi with +1/-1 as the maximum and minimum values for elements of t. If width is specified, it determines where the maximum is in the interval [0,2*pi].
// Examples
// 1. sawtooth([1 2 3 4 5],0.5)
// ans = [-0.36338 0.27324 0.90986 0.45352 -0.18310]
// 2. sawtooth([1 2; 4 5])
// ans = [-0.68169 -0.36338; 0.27324 0.59155]
if (argn(2)<1 | argn(2)>2) then
error ("Wrong number of input arguments.")
elseif (argn(2)==1)
width=1
end
if (width < 0 | width > 1 | ~ isreal (width))
error ("width must be a real value between 0 and 1");
end
t = pmodulo (t / (2 * %pi), 1);
y = zeros (size (t,1), size(t,2));
if (width ~= 0)
y (t < width) = 2 * t (t < width) / width - 1;
end
if (width ~= 1)
y( t >= width) = -2 * (t (t >= width) - width) / (1 - width) + 1;
end
endfunction
|