gusucode.com > symbolic工具箱matlab源码程序 > symbolic/@sym/triangularPulse.m

    function y = triangularPulse(varargin)
%TRIANGULARPULSE Triangular pulse function.
%   Y = TRIANGULARPULSE(X) is the symmetric triangular pulse over the 
%   interval from -1 to 1. 
%
%   Y = TRIANGULARPULSE(A,C,X) is the symmetric triangular pulse over the 
%   interval from A to C. 
%
%   Y = TRIANGULARPULSE(A,B,C,X) is the general triangular pulse over the 
%   interval from A to C with its maximum located at B. 
%
%   It is 0 if X <= A.
%   It is (X-A)/(B-A) if A <= X <= B.
%   It is (C-X)/(C-B) if B <= X <= C.
%   It is 0 if X >= C.
%
%   Example:
%      syms a x
%      triangularPulse(a-1, a+1, a+2, a-1) returns  0
%      triangularPulse(a-1, a+1, a+3, a+2) returns  1/2
%      triangularPulse(a-1, a+1, a+3, a+4) returns  0
%      triangularPulse(a-1, a+1, a+3, x)   returns  triangularPulse(a-1, a+1, a+3, x)
%
%   See also SYM/RECTPULSE.

if nargin ~= 1 && nargin ~= 3 && nargin ~= 4
  error(message('symbolic:sym:triangularPulse:WrongNumberOfArguments'));
end
args = privResolveArgs(varargin{:});
if nargin == 3 && (numel(args{1}) > 1 || numel(args{2}) > 1)
  error(message('symbolic:sym:triangularPulse:FirstTwoArgumentsMustBeScalar'));
end
if nargin == 4 && (numel(args{1})>1 || numel(args{2})>1 || numel(args{3})>1)
  error(message('symbolic:sym:triangularPulse:FirstThreeArgumentsMustBeScalar'));
end
refs = cellfun(@(x)x.s, args, 'UniformOutput', false);
ySym = mupadmex('symobj::vectorizeSpecfunc', refs{:}, 'triangularPulse', 'infinity');
y = privResolveOutput(ySym, args{1});