[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
When signals of different types are recorded simultaneously and for
lengthy periods, it may be appropriate to choose different sampling
frequencies in order to reduce the storage requirements for signals of
limited bandwidth. The support for multi-frequency records provided in
WFDB library version 9.0 (and later versions) allows application programs
to read and write records containing signals digitized at multiple
sampling frequencies. In a multi-frequency record, a frame of
samples contains one or more samples from each signal. The
frame rate (base sampling frequency) of the record, as recorded in the
header file and as normally returned by sampfreq
, is defined as
the number of frames per second. Signals sampled at multiples of the
frame rate are referred to as oversampled signals. For each signal, a
frequency multiplier specifies how many samples are included in each
frame. The frequency multiplier (1 by default) is an integer, encoded
within the format field in the header file, and specified in the
spf
field of the WFDB_Siginfo
structure for the signal.
A frame can be read as it was written
(see section getframe
)
by an application that has been written to make use of multi-frequency
records. Applications that are not “multi-frequency aware” can still
read signals using the standard getvec
interface, which returns
(as always) one sample per signal on each invocation. By default,
getvec
reads multi-frequency records in low-resolution mode.
In this mode, each oversampled signal is resampled at the frame rate by
averaging all of its samples in each frame.
The function setgvmode
can be used to select high-resolution mode,
in which getvec
replicates samples of signals digitized at less than the
maximum sampling frequency (i.e., using zero-order interpolation) so that each
sample of an oversampled signal appears in at least one sample vector returned
by getvec
. In this mode, sampfreq
returns the number of samples
per signal returned by getvec
per second of the record. Furthermore
(when using WFDB library version 9.6 and later versions), all time quantities
passed to and from the WFDB library functions are understood to be in units of
these shorter sampling intervals; thus, for example, getann
converts
times in frame numbers (as recorded in annotation files) into times in sample
numbers before filling in the caller’s annotation structure, and putann
converts times in sample numbers into times in frame numbers before writing
annotations into annotation files. This permits applications that are not
“multi-frequency aware” to read multi-frequency records with the highest
possible resolution.
The operating mode used by getvec
, if not specified by an explicit call
to setgvmode
, is determined by the value of the environment variable
WFDBGVMODE
if it is set, and otherwise by the value of
DEFWFDBGVMODE
in ‘wfdblib.h’ at the time the library was compiled..
In either case, a value of 0 selects low-resolution mode, and any other value
selects high-resolution mode.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
PhysioNet (wfdb@physionet.org)