annotate scripts/polynomial/conv-amr.m @ 2261:1b6e1629fb91

[project @ 1996-05-23 00:52:07 by jwe] Initial revision
author jwe
date Thu, 23 May 1996 00:52:07 +0000
parents faf108b99d21
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
558
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
1 function y = conv(a,b)
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
2 #Convolve two vectors.
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
3 #y = conv(a,b) returns a vector of length equal to length(a)+length(b)-1.
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
4 #If a and b are polynomial coefficient vectors, conv returns the
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
5 #coefficients of the product polynomial.
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
6 #
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
7 #SEE ALSO: deconv, poly, roots, residue, polyval, polyderiv, polyinteg
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
8
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
9 # Author:
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
10 # Tony Richardson
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
11 # amr@mpl.ucsd.edu
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
12 # June 1994
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
13
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
14 if(nargin != 2)
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
15 error("usage: conv(a,b)");
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
16 endif
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
17
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
18 if(is_matrix(a) || is_matrix(b))
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
19 error("conv: both arguments must be vectors");
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
20 endif
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
21
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
22 la = length(a);
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
23 lb = length(b);
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
24
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
25 ly = la + lb - 1;
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
26
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
27 # Ensure that both vectors are row vectors.
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
28 if(rows(a) > 1)
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
29 a = reshape(a,1,la);
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
30 endif
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
31 if(rows(b) > 1)
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
32 b = reshape(b,1,lb);
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
33 endif
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
34
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
35 # Use the shortest vector as the coefficent vector to filter.
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
36 if (la < lb)
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
37 if(ly>lb)
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
38 x = [b zeros(1,ly-lb)];
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
39 else
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
40 x = b;
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
41 endif
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
42 y = filter(a,1,x);
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
43 else
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
44 if(ly>la)
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
45 x = [a zeros(1,ly-la)];
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
46 else
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
47 x = a;
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
48 endif
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
49 y = filter(b,1,x);
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
50 endif
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
51
faf108b99d21 [project @ 1994-07-25 20:38:45 by jwe]
jwe
parents:
diff changeset
52 endfunction