⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gauspuls.m

📁 matlabDigitalSigalProcess内有文件若干
💻 M
字号:
function [yc,ys,ye] = gauspuls(t,fc,bw,bwr,tpr)
%GAUSPULS Gaussian-modulated sinusoidal pulse generator.
%   YI=GAUSPULS(T,FC,BW) returns samples of the unity-amplitude
%   Gaussian RF pulse with center frequency FC (Hertz) and
%   fractional bandwidth BW, at the times indicated in array T.
%   Note that BW must be > 0.  By default, FC=1000 Hz and BW=0.5.
%
%   YI=GAUSPULS(T,FC,BW,BWR) specifies the optional fractional
%   bandwidth reference level, BWR.  The pulse bandwidth is
%   100*BW percent as measured at a level of BWR dB with respect
%   to the normalized signal peak.  By default, BWR=-6 dB.  Note that
%   BWR must be < 0, as it must always indicate a reference level less
%   than the peak (unity) envelope amplitude.
%
%   [YI,YQ]=GAUSPULS(...) returns both the in-phase and quadrature
%   pulses.  [YI,YQ,YE]=GAUSPULS(...) returns the RF signal envelope.
%
%   TC=GAUSPULS('cutoff',FC,BW,BWR,TPE) returns the cutoff time TC >= 0
%   at which the trailing pulse envelope falls below TPE dB with
%   respect to the peak envelope amplitude.  By default, TPE=-60 dB.
%   Note that TPE must be < 0 for the same reason as given for BWR.
%
%   Default values are substituted for empty or omitted trailing input
%   arguments.
%
%   For example, plot a 50 kHz Gaussian RF pulse with 60% bandwidth and
%   sampled at a rate of 1 MHz.  Truncate the pulse where the envelope
%   falls 40 dB below the peak.
%       tc = gauspuls('cutoff',50E3,.6,[],-40);
%       t  = -tc : 1E-6 : tc;
%       yi = gauspuls(t,50E3,.6); plot(t,yi)
%
%   See also CHIRP, SAWTOOTH, SQUARE.

%   Author(s): D. Orofino, 3/96
%   Copyright (c) 1988-98 by The MathWorks, Inc.
%       $Revision: 1.5 $
%   $Revision: 1.5 $  $Date: 1997/12/02 18:36:04 $

% Check input parameters:
error(nargchk(1,5,nargin));
if nargin<5, tpr = []; end
if nargin<4, bwr = []; end
if nargin<3, bw = []; end
if nargin<2, fc = []; end
if isempty(tpr), tpr = -60; end
if isempty(bwr), bwr = -6; end
if isempty(bw), bw = 0.5; end
if isempty(fc), fc = 1E3; end

if bw<=0, error('Fractional bandwidth BW must be > 0.'); end
if fc<0, error('Frequency FC must be >= 0 Hz.'); end
if bwr>=0, error('Bandwidth reference level BWR must be < 0 dB.'); end

% Determine Gaussian mean and variance in the
% frequency domain to match specifications:
r = 10.^(bwr/20);             % Ref level (fraction of max peak)
fv = -bw*bw*fc*fc/(8*log(r)); % variance is fv, mean is fc
% Determine corresponding time-domain parameters:
tv = 1/(4*pi*pi*fv);  % variance is tv, mean is 0

compute_cutoff = strncmp(lower(t),'cutoff',length(t));

if compute_cutoff,
  % Compute pulse cutoff time:
  if nargout>1, error('Too many return parameters.'); end

  % Determine extent (pulse length) of time-domain envelope:
  delta = 10.^(tpr/20);        % Ref level (fraction of max peak)
  yc = sqrt(-2*tv*log(delta)); % Pulse cutoff time

else
  % Return RF pulses:
  if nargin>4, error('Too many input arguments.'); end
  if isempty(t),
    ye=[]; yc=[]; ys=[];
    return
  end

  % Compute time-domain pulse envelope, normalized by sqrt(2*pi*tv):
  ye = exp(-t.*t/(2*tv));

  % Modulate envelope to form in-phase and quadrature components:
  yc = ye .* cos(2*pi*fc*t);    % In-phase
  if nargout>1,
    ys = ye .* sin(2*pi*fc*t);  % Quadrature
  end
end

% end of gauspuls.m

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -