皮皮网

【狂风武器源码搭配】【CS起源C 源码】【Wap社区php源码】matlab协议源码

来源:浏览器源码编译 时间:2024-11-23 05:56:58

1.求 matlab 中bode源代码
2.MATLAB里bd_asymp函数源代码是协议什么?

matlab协议源码

求 matlab 中bode源代码

       function [magout,phase,w] = bode(a,b,c,d,iu,w)

       %BODE Bode frequency response of LTI models.

       %

       % BODE(SYS) draws the Bode plot of the LTI model SYS (created with

       % either TF, ZPK, SS, or FRD). The frequency range and number of

       % points are chosen automatically.

       %

       % BODE(SYS,{ WMIN,WMAX}) draws the Bode plot for frequencies

       % between WMIN and WMAX (in radians/second).

       %

       % BODE(SYS,W) uses the user-supplied vector W of frequencies, in

       % radian/second, at which the Bode response is to be evaluated.

       % See LOGSPACE to generate logarithmically spaced frequency vectors.

       %

       % BODE(SYS1,SYS2,...,W) graphs the Bode response of multiple LTI

       % models SYS1,SYS2,... on a single plot. The frequency vector W

       % is optional. You can specify a color, line style, and marker

       % for each model, as in

       % bode(sys1,'r',sys2,'y--',sys3,'gx').

       %

       % [MAG,PHASE] = BODE(SYS,W) and [MAG,PHASE,W] = BODE(SYS) return the

       % response magnitudes and phases in degrees (along with the frequency

       % vector W if unspecified). No plot is drawn on the screen.

       % If SYS has NY outputs and NU inputs, MAG and PHASE are arrays of

       % size [NY NU LENGTH(W)] where MAG(:,:,k) and PHASE(:,:,k) determine

       % the response at the frequency W(k). To get the magnitudes in dB,

       % type MAGDB = *log(MAG).

       %

       % For discrete-time models with sample time Ts, BODE uses the

       % transformation Z = exp(j*W*Ts) to map the unit circle to the

       % real frequency axis. The frequency response is only plotted

       % for frequencies smaller than the Nyquist frequency pi/Ts, and

       % the default value 1 (second) is assumed when Ts is unspecified.

       %

       % See also BODEMAG, NICHOLS, NYQUIST, SIGMA, FREQRESP, LTIVIEW, LTIMODELS.

       % Old help

       %warning(['This calling syntax for ' mfilename ' will not be supported in the future.'])

       %BODE Bode frequency response for continuous-time linear systems.

       % BODE(A,B,C,D,IU) produces a Bode plot from the single input IU to

       % all the outputs of the continuous state-space system (A,B,C,D).

       % IU is an index into the inputs of the system and specifies which

       % input to use for the Bode response. The frequency range and

       % number of points are chosen automatically.

       %

       % BODE(NUM,DEN) produces the Bode plot for the polynomial transfer

       % function G(s) = NUM(s)/DEN(s) where NUM and DEN contain the

       % polynomial coefficients in descending powers of s.

       %

       % BODE(A,B,C,D,IU,W) or BODE(NUM,DEN,W) uses the user-supplied

       % frequency vector W which must contain the frequencies, in

       % radians/sec, at which the Bode response is to be evaluated. See

       % LOGSPACE to generate logarithmically spaced frequency vectors.

       % When invoked with left hand arguments,

       % [MAG,PHASE,W] = BODE(A,B,C,D,...)

       % [MAG,PHASE,W] = BODE(NUM,DEN,...)

       % returns the frequency vector W and matrices MAG and PHASE (in

       % degrees) with as many columns as outputs and length(W) rows. No

       % plot is drawn on the screen.

       %

       % See also LOGSPACE, SEMILOGX, MARGIN, NICHOLS, and NYQUIST.

       % J.N. Little --

       % Revised A.C.W.Grace 8--, 2-4-, 6--

       % Revised Clay M. Thompson 7-9-

       % Revised A.Potvin -1-

       % Copyright - The MathWorks, Inc.

       % $Revision: 1.1.8.2 $ $Date: // :: $

       ni = nargin;

       no = nargout;

       % Check for demo and quick exit

       if ni==0,

        eval('exresp(''bode'')')

        return

       end

       error(nargchk(2,6,ni));

       % Determine which syntax is being used

       switch ni

       case 2

        if size(a,1)>1,

        % SIMO syntax

        a = num2cell(a,2);

        den = b;

        b = cell(size(a,1),1);

        b(:) = { den};

        end

        sys = tf(a,b);

        w = [];

       case 3

        % Transfer function form with time vector

        if size(a,1)>1,

        % SIMO syntax

        a = num2cell(a,2);

        den = b;

        b = cell(size(a,1),1);

        b(:) = { den};

        end

        sys = tf(a,b);

        w = c;

       case 4

        % State space system without iu or time vector

        sys = ss(a,b,c,d);

        w = [];

       otherwise

        % State space system, with iu but w/o time vector

        if min(size(iu))>1,

        error('IU must be a vector.');

        elseif isempty(iu),

        iu = 1:size(d,2);

        end

        sys = ss(a,b(:,iu),c,d(:,iu));

        if ni<6,

        w = [];

        end

       end

       if no==0,

        bode(sys,w)

       else

        [magout,phase,w] = bode(sys,w);

        [Ny,Nu,lw] = size(magout);

        magout = reshape(magout,[Ny*Nu lw]).';

        phase = reshape(phase,[Ny*Nu lw]).';

       end

       % end bode

MATLAB里bd_asymp函数源代码是什么?

       具体函数如下所示,

       function [wpos,源码狂风武器源码搭配ypos]=bd_asymp(G,w)

       G1=zpk(G); Gtf=tf(G);

       if nargin==1,

       w=freqint2(Gtf.num{ 1},Gtf.den{ 1},);

       end

       zer=G1.z{ 1}; pol=G1.p{ 1}; gain=G1.k;

       wpos=[]; pos1=[];

       for i=1:length(zer);

       if isreal(zer(i))

       wpos=[wpos, abs(zer(i))];

       pos1=[pos1,];

       else

       if imag(zer(i))>0

       wpos=[wpos, abs(zer(i))];

       pos1=[pos1,];

       end, end, end

       for i=1:length(pol);

       if isreal(pol(i))

       wpos=[wpos, abs(pol(i))];

       pos1=[pos1,-];

       else

       if imag(pol(i))>0

       wpos=[wpos, abs(pol(i))];

       pos1=[pos1,-];

       end, end, end

       wpos=[wpos w(1) w(length(w))];

       pos1=[pos1,0,0];

       [wpos,ii]=sort(wpos); pos1=pos1(ii);

       ii=find(abs(wpos)<eps); kslp=0;

       w_start=*eps;

       if length(ii)>0,

       kslp=sum(pos1(ii));

       ii=(ii(length(ii))+1):length(wpos);

       wpos=wpos(ii); pos1=pos1(ii);

       end

       while 1

       [ypos1,pp]=bode(G,w_start);

       if isinf(ypos1), w_start=w_start*;

       else, break; end

       end

       wpos=[w_start wpos];

       ypos(1)=*log(ypos1);

       pos1=[kslp pos1];

       for i=2:length(wpos)

       kslp=sum(pos1(1:i-1));

       ypos(i)=ypos(i-1)+...

       kslp*log(wpos(i)/wpos(i-1));

       end

       ii=find(wpos>=w(1)&wpos<=w(length(w)));

       wpos=wpos(ii); ypos=ypos(ii);