X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=octave_packages%2Fsignal-1.1.3%2Frectpuls.m;fp=octave_packages%2Fsignal-1.1.3%2Frectpuls.m;h=8d686720bd669d51e2d143b21db459b8047c525a;hb=f5f7a74bd8a4900f0b797da6783be80e11a68d86;hp=0000000000000000000000000000000000000000;hpb=1705066eceaaea976f010f669ce8e972f3734b05;p=CreaPhase.git diff --git a/octave_packages/signal-1.1.3/rectpuls.m b/octave_packages/signal-1.1.3/rectpuls.m new file mode 100644 index 0000000..8d68672 --- /dev/null +++ b/octave_packages/signal-1.1.3/rectpuls.m @@ -0,0 +1,57 @@ +## Copyright (C) 2000 Paul Kienzle +## +## This program is free software; you can redistribute it and/or modify it under +## the terms of the GNU General Public License as published by the Free Software +## Foundation; either version 3 of the License, or (at your option) any later +## version. +## +## This program is distributed in the hope that it will be useful, but WITHOUT +## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +## details. +## +## You should have received a copy of the GNU General Public License along with +## this program; if not, see . + +## usage: y = rectpuls(t, w) +## +## Generate a rectangular pulse over the interval [-w/2,w/2), sampled at +## times t. This is useful with the function pulstran for generating a +## series pulses. +## +## Example +## fs = 11025; # arbitrary sample rate +## f0 = 100; # pulse train sample rate +## w = 0.3/f0; # pulse width 3/10th the distance between pulses +## auplot(pulstran(0:1/fs:4/f0, 0:1/f0:4/f0, 'rectpuls', w), fs); +## +## See also: pulstran + +function y = rectpuls(t, w = 1) + + if nargin<1 || nargin>2, + print_usage; + endif + + y = zeros(size(t)); + idx = find(t>=-w/2 & t < w/2); + try wfi = warning("off", "Octave:fortran-indexing"); + catch wfi = 0; + end + unwind_protect + y(idx) = ones(size(idx)); + unwind_protect_cleanup + warning(wfi); + end_unwind_protect +endfunction + +%!assert(rectpuls(0:1/100:0.3,.1), rectpuls([0:1/100:0.3]',.1)'); +%!assert(isempty(rectpuls([],.1))); +%!demo +%! fs = 11025; # arbitrary sample rate +%! f0 = 100; # pulse train sample rate +%! w = 0.3/f0; # pulse width 1/10th the distance between pulses +%! ylabel("amplitude"); xlabel("time (ms)"); +%! title("graph shows 3 ms pulses at 0,10,20,30 and 40 ms"); +%! auplot(pulstran(0:1/fs:4/f0, 0:1/f0:4/f0, 'rectpuls', w), fs); +%! title(""); xlabel(""); ylabel("");