📄 chain.m
字号:
function [nn,dd] = chain(num,den,n)
%CHAIN Derivative of polynomial using chain rule
% [N,D]=CHAIN(P,Q,M) returns Mth derivative (as N/D) of polynomial P/Q
% Defaults: M=1, Q=1
% N=CHAIN(U) returns the derivative of the polynomial P
%
% CHAIN (with no input arguments) invokes the following example:
%
% % Evaluate the 2nd derivative of s/(s*s+4)
% >>[a,b]=chain([1 0],[1 0 4],2)
% ADSP Toolbox: Version 2.0
% For use with "Analog and Digital Signal Processing", 2nd Ed.
% Published by PWS Publishing Co.
%
% Ashok Ambardar, EE Dept. MTU, Houghton, MI 49931, USA
% http://www.ee.mtu/faculty/akambard.html
% e-mail: akambard@mtu.edu
% Copyright (c) 1998
if nargin==0,help chain,disp('Strike a key to see results of the example')
pause,[a,b]=chain([1 0],[1 0 4],2),return,end
if nargin<3,n=1;end
if n<0,error('n must be an integer >=0');return,end
if nargin<2, den=1;end %polynomial case
num=num(:).';den=den(:).';
if n==0,nn=num;dd=den;return,end
while num(1)==0,num(1)=[];end
while den(1)==0,den(1)=[];end
ln=length(num);ld=length(den);
nn=num;dd=den;
%p=polyder(den);%Replace
if ld<2,pd=0;else,pd=den(1:ld-1).*(ld-1:-1:1);end %Derivative
for i=1:n
if ln<2,pn=0;else,pn=nn(1:ln-1).*(ln-1:-1:1);end %Derivative
n1=-i*conv(nn,pd);l1=length(n1);
n2=conv(den,pn);l2=length(n2);
nn=[zeros(1,l2-l1) n1]+[zeros(1,l1-l2) n2];ln=length(nn);
dd=conv(dd,den);
end
while nn(1)==0,nn(1)=[];end
while dd(1)==0,dd(1)=[];end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -