[34f3ea]: fourier / pfilt.m  Maximize  Restore  History

Download this file

70 lines (57 with data), 2.1 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
function h=pfilt(f,g,varargin)
%PFILT Apply filter with periodic boundary conditions
% Usage: h=pfilt(f,g);
% h=pfilt(f,g,a,dim);
%
% `pfilt(f,g)` applies the filter *g* to the input *f*. If *f* is a
% matrix, the filter is applied along each column.
%
% `pfilt(f,g,a)` does the same, but downsamples the output keeping only
% every a'th sample (starting with the first one).
%
% `pfilt(f,g,a,dim)` filters along dimension dim. The default value of
% [] means to filter along the first non-singleton dimension.
%
% The filter *g* can be a vector, in which case the vector is treated
% as a zero-delay FIR filter.
%
% The filter *g* can be a cell array. The following options are
% possible:
%
% * If the first element of the cell array is the name of one of the
% windows from |firwin|, the whole cell array is passed onto
% |firfilter|.
%
% * If the first element of the cell array is `'bl'`, the rest of the
% cell array is passed onto |blfilter|.
%
% * If the first element of the cell array is `'pgauss'`, `'psech'`,
% the rest of the parameters is passed onto the respective
% function. Note that you do not need to specify the length *L*.
%
% The coefficients obtained from filtering a signal *f* by a filter *g* are
% defined by
%
% .. L-1
% c(n+1) = sum f(l+1) * g(an-l+1)
% l=0
%
% .. math:: c\left(n+1\right)=\sum_{l=0}^{L-1}f\left(l+1\right)g\left(an-l+1\right)
%
% where $an-l$ is computed modulo $L$.
%
% See also: pconv
% Assert correct input.
if nargin<2
error('%s: Too few input parameters.',upper(mfilename));
end;
definput.import={'pfilt'};
definput.keyvals.a=1;
definput.keyvals.dim=[];
[flags,kv,a,dim]=ltfatarghelper({'a','dim'},definput,varargin);
L=[];
[g,info] = comp_fourierwindow(g,L,upper(mfilename));
[f,L,Ls,W,dim,permutedsize,order]=assert_sigreshape_pre(f,L,dim,upper(mfilename));
h=comp_pfilt(f,g,a,info.gl<kv.crossover);
permutedsize(1)=size(h,1);
h=assert_sigreshape_post(h,dim,permutedsize,order);

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

JavaScript is required for this form.





No, thanks