home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l460 / 2.ddi / POLYFUN.DI$ / POLYDER.M < prev    next >
Encoding:
Text File  |  1993-03-07  |  985 b   |  27 lines

  1. function [a,b] = polyder(u,v)
  2. %POLYDER Polynomial derivative.
  3. %    POLYDER(P) returns the derivative of the polynomial whose
  4. %    coefficients are the elements of vector P.
  5. %    POLYDER(A,B) returns the derivative of polynomial A*B.
  6. %    [Q,D] = POLYDER(B,A) returns the derivative of the
  7. %    polynomial ratio B/A, represented as Q/D.
  8.  
  9. %    Charles R. Denham, MathWorks, 1988.
  10. %    Copyright (c) 1984-93 by The MathWorks, Inc.
  11.  
  12. if nargin < 2, v = 1; end
  13.  
  14. u = u(:).'; v = v(:).';
  15. nu = length(u); nv = length(v);
  16. if nu < 2, up = 0; else, up = u(1:nu-1) .* (nu-1:-1:1); end
  17. if nv < 2, vp = 0; else, vp = v(1:nv-1) .* (nv-1:-1:1); end
  18. a1 = conv(up,v); a2 = conv(u,vp);
  19. i = length(a1); j = length(a2); z = zeros(1,abs(i-j));
  20. if i > j, a2 = [z a2]; elseif i < j, a1 = [z a1]; end
  21. if nargout < 2, a = a1 + a2; else, a = a1 - a2; end
  22. f = find(a ~= 0);
  23. if any(f), a = a(f(1):length(a)); else, a = 0; end
  24. b = conv(v,v);
  25. f = find(b ~= 0);
  26. if any(f), b = b(f(1):length(b)); else, b = 0; end
  27.