view scripts/polynomial/deconv-amr.m @ 2121:bc6ecd8f1175

[project @ 1996-05-12 06:45:55 by jwe]
author jwe
date Sun, 12 May 1996 06:45:55 +0000
parents faf108b99d21
children
line wrap: on
line source

function [b, r] = deconv(y,a)
#Deconvolve two vectors.
#
#[b, r] = deconv(y,a) solves for b and r such that:
#
#  y = conv(a,b) + r
#
#If y and a are polynomial coefficient vectors, b will contain the
#coefficients of the polynomial quotient and r will be a remander
#polynomial of lowest order.
#
#SEE ALSO: conv, poly, roots, residue, polyval, polyderiv, polyinteg

# Author:
#  Tony Richardson
#  amr@mpl.ucsd.edu
#  June 1994

  if(nargin != 2)
    error("usage: deconv(y,a)");
  endif

  if(is_matrix(y) || is_matrix(a))
    error("conv: both arguments must be vectors");
  endif

  la = length(a);
  ly = length(y);

  lb = ly - la + 1;

  if (ly>la)
    b = filter(y,a,[1 zeros(1,ly-la)]);
  elseif (ly == la)
    b = filter(y,a,1);
  else
    b = 0;
  endif

  b = polyreduce(b);

  lc = la + length(b) - 1;
  if(ly == lc)
    r = y - conv(a,b);
  else
    r = [ zeros(1,lc-ly) y] - conv(a,b);
  endif

  r = polyreduce(r);

endfunction