Professional Documents
Culture Documents
Practical Biomedical Signal Analysis Using MATLAB® (Series in Medical Physics and Biomedical Engineering) 2nd Edition Blinowska
Practical Biomedical Signal Analysis Using MATLAB® (Series in Medical Physics and Biomedical Engineering) 2nd Edition Blinowska
https://ebookmeta.com/product/optical-polarimetric-modalities-
for-biomedical-research-biological-and-medical-physics-
biomedical-engineering-nirmal-mazumder-editor/
https://ebookmeta.com/product/electrical-impedance-tomography-
methods-history-and-applications-series-in-medical-physics-and-
biomedical-engineering-2nd-edition-andy-adler/
https://ebookmeta.com/product/biomedical-sensing-and-analysis-
signal-processing-in-medicine-and-biology-iyad-obeid/
https://ebookmeta.com/product/biomedical-signal-analysis-for-
connected-healthcare-1st-edition-sridhar-krishnan/
Auto-Segmentation for Radiation Oncology: State of the
Art (Series in Medical Physics and Biomedical
Engineering) 1st Edition Jinzhong Yang
https://ebookmeta.com/product/auto-segmentation-for-radiation-
oncology-state-of-the-art-series-in-medical-physics-and-
biomedical-engineering-1st-edition-jinzhong-yang/
https://ebookmeta.com/product/auto-segmentation-for-radiation-
oncology-state-of-the-art-series-in-medical-physics-and-
biomedical-engineering-1st-edition-jinzhong-yang-2/
https://ebookmeta.com/product/biomedical-engineering-1st-edition/
https://ebookmeta.com/product/multiscale-modelling-in-biomedical-
engineering-ieee-press-series-on-biomedical-engineering-1st-
edition-antonis-i-sakellarios/
Practical Biomedical
Signal Analysis Using
MATLAB®
Series in Medical Physics and Biomedical Engineering
Trademark notice: Product or corporate names may be trademarks or registered trademarks and are
used only for identification and explanation without intent to infringe.
ISBN: 978-1-138-36441-7 (hbk)
ISBN: 978-1-032-10552-9 (pbk)
ISBN: 978-0-429-43135-7 (ebk)
Typeset in CMR10
by KnowledgeWorks Global Ltd.
DOI: 10.1201/9780429431357
Access the Support Material: www.routledge.com/9781138364417
Contents
Preface xiii
List of Abbreviations xv
2 Introductory Concepts 11
2.1 Stochastic and Deterministic Signals, Concepts of Stationarity
and Ergodicity . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Discrete Signals . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.1 The Sampling Theorem . . . . . . . . . . . . . . . . . 14
2.2.1.1 Aliasing . . . . . . . . . . . . . . . . . . . . . 15
2.2.2 Quantization Error . . . . . . . . . . . . . . . . . . . . 17
2.3 Linear Time Invariant Systems . . . . . . . . . . . . . . . . . 18
2.4 Duality of Time and Frequency Domains . . . . . . . . . . . 21
2.4.1 Continuous Periodic Signal . . . . . . . . . . . . . . . 22
2.4.2 Infinite Continuous Signal . . . . . . . . . . . . . . . . 22
2.4.3 Finite Discrete Signal . . . . . . . . . . . . . . . . . . 23
v
vi Contents
Bibliography 289
Index 349
About the Series
The Series in Medical Physics and Biomedical Engineering describes the ap-
plications of physical sciences, engineering, and mathematics in medicine and
clinical research.
The series seeks (but is not restricted to) publications in the following
topics:
xi
xii About the Series
This book is intended to guide all those working in the field of biomedical
signal analysis and application, particularly for graduate students, researchers
at an early stage of their career, industrial researchers, and people interested
in the development of signal processing methods. The book is different from
other monographs, which are usually collections of papers written by several
authors. We tried to present a coherent view of various signal processing meth-
ods in the context of their application. Not only do we wish to present the
current techniques of biomedical signal processing, but we also want to pro-
vide guidance on which methods are appropriate for the given task and given
kind of data.
One of the motivations for writing this book was the longstanding ex-
perience of the authors in reviewing manuscripts submitted to journals and
conference proceedings, which showed how often the signal processing meth-
ods are misused. Quite often, sophisticated, but at the same time non-robust
and prone to systematic errors, methods are applied for the tasks where more
straightforward methods would work better. In this book, we aim to show the
advantages and disadvantages of different techniques in the context of their
applications.
In the first part of the book, we describe the methods of signal analysis, in-
cluding the most advanced and new approaches, in an easy and accessible way.
We illustrate them with MATLAB R Live Scripts. We omitted proofs of the
theorems when necessary, sending the reader to the more specialized mathe-
matical literature. To make the book a practical tool, we refer to MATLAB R
routines when available and to the software freely available on the Internet.
In the second part of the book, we describe the application of the methods
presented in the first part of the book to the different biomedical signals: elec-
troencephalogram (EEG), electrocorticogram (ECoG), event-related potential
(ERP), electrocardiogram (ECG), heart rate variability signal (HRV), elec-
tromyograms (EMG), magnetoencephalograms (MEG), magnetocardiograms
(MCG), phonocardiograms (PCG), and otoacoustic emissions (OAE).
In this second edition, we also address the analysis of fMRI (BOLD) and
functional near-infrared spectroscopy (fNIRS) time series. We discuss new
topics that gained interest in recent years, namely, phase-amplitude coupling,
wearable devices, multimodal signal analysis, and brain-computer interfaces.
Major updates concern multiple channel analysis and connectivity measures.
We included a short introduction presenting the basic syntax and functionality
relevant to signal processing for those new to MATLAB.
xiii
xiv Preface
xv
xvi List of Abbreviations
1.1 Introduction
MATLAB R is a commercial platform offered by The MathWorks, Inc., the
USA which delivers a high-level, matrix-based language and an integrated
development environment. Together with specialized libraries, so-called tool-
boxes, it is a very efficient system for fast prototyping, and complex scientific
and engineering computations. What is also very important many algorithms
used in biomedical signal processing were implemented and published as MAT-
LAB functions or toolboxes. In the following sections, we shortly present basic
syntax and concepts, needed for the understanding of the examples given in
the book and in accompanying Live Script demos. This may be helpful for a
novice MATLAB user. A deeper knowledge of MATLAB can be obtained from
many MATLAB books and the very useful build-in documentation system of
MATLAB.
DOI: 10.1201/9780429431357-1 1
2 Practical Biomedical Signal Analysis Using MATLAB R
The matrixes can be entered either from command line/editor (type and
execute the examples in the command line, and look into the workspace
window ):
A=[1 2 3 4; 5 6 7 8; 8 9 1 2];
disp(A)
or produced by a function:
B=rand(3,3);
disp(B)
or, in practical cases most often, loaded from a file (this we will show later in
Sect. 1.8).
Note the semicolon at the end of each line—it prevents MATLAB from
displaying its result in the command window. A semicolon inside the matrix
forming command finishes a given row and starts another one.
diagonal: di = diag(B);
>> B(3,1)
??? Index exceeds matrix dimensions.
The colon operator “:”, is one of the most useful operators in MATLAB. It
occurs in several different use cases. The expression 1:10 produces a row vector
with elements from 1 to 10.
>> 1:10
ans =
1 2 3 4 5 6 7 8 9 10
4 Practical Biomedical Signal Analysis Using MATLAB R
M = magic(4);
% count the sum of the elements in each row,
s_r = sum(M,2);
disp(s_r)
% in each column,
s_c = sum(M,1);
disp(s_c)
% and both diagonals.
s_d1 = sum(diag(M));
disp(s_d1)
s_d2 = sum(diag(fliplr(M)));
disp(s_d2)
1.5 Conditionals
Often an algorithm needs to branch based on runtime conditions. MATLAB
has syntax for this in the form of if statement, try this example for different
values of x:
x = -1;
if x == 0
disp(’x is zero’)
elseif x > 0
disp(’x is positive’)
else
disp(’x is negative’)
end
Note that the block of the statement finishes with the keyword end. The
indentions are not necessary, but they make the code more readable.
If there are many options, it may be better to use the switch command.
For instance:
method = ’bilinear’;
switch method
case {’linear’,’bilinear’}
1 The code is delivered in matlab/c1/Ch1_magic_square.m
6 Practical Biomedical Signal Analysis Using MATLAB R
disp(’Method is linear’)
case ’cubic’
disp(’Method is cubic’)
case ’nearest’
disp(’Method is nearest’)
otherwise
disp(’Unknown method.’)
end
1.6 Loops
We would use loops if we need to execute a block of commands for a number
of times. There are two types of loops:
while executes a group of statements an indefinite number of times, based
on some logical condition; example:
i = 10
while i>1
i = i-1;
disp(i)
end
for k = 1:10
disp(k*(1:10))
end
the commands from the file. The script has access to all variables found in
the workspace, variables created in the script are visible in the workspace.
Most MATLAB commands are functions, some are precompiled and work very
fast, but a significant number is delivered as text files that are interpreted at
runtime (they run slower). The advantage is that we can look into these files
and learn a lot.
In MATLAB, you can also create your own functions—built from existing
ones. The file containing a function should have the same name as the function
with the extension “.m”. This is because MATLAB identifies the names of
scripts and functions by the names of files on the search path. The first line
of a function file defines the syntax of a function call, e.g.:
function [mean, stdev] = stat(x)
% STAT computes mean and standard deviation of x.
n = length(x);
mean = sum(x) / n;
stdev = sqrt( sum((x - mean).^ 2) / n);
The above code2 defines the function stat (should be saved in the file
stat.m). This function accepts the vector x as an argument and returns two
values: mean and stdev. Variables used inside the function are local, i.e. they
are not visible in the workspace outside the scope of the function.
You can call the stat function as:
>> x = 1:10;
>> [m, s] = stat(x)
m =
5.5000
s =
2.8723
Return from the function occurs after reaching the end of the function body.
An earlier conditional return can be achieved with the command return.
T = 1;
Fs = 128;
t = 0:1/Fs:T-1/Fs;
s1 = sin(2*pi*2*t);
s2 = sin(2*pi*3*t);
signal = zeros(2,T * Fs);
signal(1,:) = s1;
signal(2,:) = s2;
We store the consecutive signals in the rows of matrix signal. This is conve-
nient for writing them as a multiplexed file.4
Saving the binary signal:
f_out = fopen(‘test_signal1.bin’, ’w’,’l’); %open a file for writing
fwrite(f_out, signal,’double’,’ieee-le’); % write the signal data
% to the file identified by
% f_out as double precision
% floats with the machine
% format little-endian
fclose(f_out); % close the file
20
-20
-40
0 50 100 150 200 250 300 350 400 450 500
20
10
0
-10
-20
40
20
-20
0 50 100 150 200 250 300 350 400 450 500
FIGURE 1.1
Correct traces of the signal form the file 3_channel_signal.bin.
1.8.3 Exercises
1.8.3.1 Unknown Data Type
Suppose, we have a 3-channel binary file with an EEG signal. Unfortu-
nately, we have forgotten what is the type of the recorded data. Load the file
3_channel_signal.bin and using the plots and Figure 1.1 with signal frag-
ments guess which of the following type of stored variables is true: “float”,
“uint” or “double”. Note, how the traces change if you enter the wrong data
type.
10 Practical Biomedical Signal Analysis Using MATLAB R
DOI: 10.1201/9780429431357-2 11
12 Practical Biomedical Signal Analysis Using MATLAB R
E[.] denotes expected value. In general the expected value of the given function
f (ξ) may be expressed by:
N
X
E [f (ξ (t1 ))] = lim f (xk (t1 )) p(xk , t1 ) (2.3)
N →∞
k=1
Central moments mn about the mean are calculated in respect to the mean
value µx . The first central moment is zero. The second order central moment
is variance: h i
2
m2 = σx2 = E (ξ − µx ) (2.6)
Parameter β1 related to m3 :
m3 m3
β1 = = (2.8)
3/2
m2 σ3
FIGURE 2.1
Illustration of sampling and interpolating of signals. a) The continuous signal
(gray) is sampled at points indicated by circles. b) The impulse response of
the Whittaker-Shannon interpolation formula for a selected point. c) Recon-
struction (black) of signal computed according to (2.14).
for n ∈ Z be the nth sample. We assume that the highest frequency present
in the sampled signal is FN and that it is smaller than half of the sampling
frequency FN < 21 Fs . Then the function f (t) is represented by:
∞ ∞
X t − nT X sin π(2Fs t − n)
f (t) = x[n]sinc = x[n] (2.14)
n=−∞
T n=−∞
π(2Fs t − n)
MATLAB example
MATLAB code reproducing Figure 2.1 is given in:
matlab/c2/Ch2_Whittaker_Shannon_interpolation.m
2.2.1.1 Aliasing
What happens if the assumption of the sampling theorem is not fulfilled and
the original signal contains frequencies higher than the Nyquist frequency? In
such cases we observe an effect called aliasing—different signal components
become indistinguishable (aliased). If the signal of frequency f0 ∈ 12 Fs , Fs
is sampled with frequency Fs then it has the same samples as the signal with
frequency f1 = Fs − f0 . Note that |f1 | < 12 Fs . The sampled signal contains
16 Practical Biomedical Signal Analysis Using MATLAB R
FIGURE 2.2
Illustration of the aliasing effect. Samples taken every 0.1 s from a 9 Hz sinu-
soid (black) are exactly the same as these taken from the 1 Hz sinusoid (gray).
FIGURE 2.3
Illustration of the quantization error for a 3 bit ADC. The digitized represen-
tation (black line) of the continuous sinusoid (gray line). The range of 2 [V]
is divided into 8 levels. The sampled signal values (black dots) are rounded to
the nearest ADC level.
Using this function any discrete sequence x[n] can be expressed as:
X
x[n] = x[k]δ[n − k] (2.16)
k
and the output of the LTI system at time n due to single impulse at moment
k as3 :
hk [n] = L{δ[n − k]} = h[n − k] (2.17)
The output of the LTI system
2 In case of continuous time system the impulse is the Dirac’s delta—an infinitely sharp
peak bounding unit area; in case of discrete systems it is a Kronecker delta—a sample of
value 1 at the given moment in time.
3 In this formula we also use the time invariance property.
20 Practical Biomedical Signal Analysis Using MATLAB R
FIGURE 2.4
Idea of output production by an LTI system—convolution of input spikes
with the impulse response function. The impulse response of the LTI system
is multiplied by the amplitude of the input impulse. This is the response to
the current input. The current response is added to the time-shifted responses
to the previous inputs.
F
,
x(t) k X(ω)
F −1
where: Z T
1 2πt
cn = x(t)e−i T n dt (2.23)
T 0
This fact can be easily checked by substitution:
Z T
2πt
x(t)e−i T k dt =
0 Z T ∞
2πt 2πt
X
= cn ei T n e−i T k dt
0 n=−∞
∞ Z T
2πt
X
= cn ei T (n−k) dt (2.24)
n=−∞ 0
XZ T XZ T
2πt
= cn dt + cn e i T (n−k) dt
n=k 0 n6=k | 0 {z }
=0
= T cn
Z T
1 2πt
X[k] = x(t)δ(t − nTs )e−i T k dt
T 0
N −1 N −1
1 X 2πknTs 1 X 2π
= x[n]e−i T Ts = x[n]e−i N kn (2.28)
N Ts n=0 N n=0
Conjugation:
∗ ∗
z(t) = x(t) ⇒ Z(f ) = X(−f )
∗
The symbol throughout the book denotes the complex conjugation.
Convolution theorem:
This theorem has many applications. It allows changing the convolution op-
eration in one of the dual (time or frequency) spaces into the multiplication
in the other space. Combined with the FFT algorithm the convolution theo-
rem allows for fast computations of convolution. It also provides insight into
the consequences of windowing the signals, or applications of filters.
N −1 N −1
X 1 X
x[n]y ∗ [n] = X[k]Y ∗ [k] (2.32)
n=0
N
k=0
2
Because of the Parseval’s theorem (2.33) we can think of N1 |X[k]| as
the portion of signal power carried by the complex exponential component
of frequency indexed by k. If we process real signals, then the complex ex-
ponential in Fourier series come in conjugate pairs indexed by k and N − k
for k ∈ 1, . . . , N/2. Each of the components of the pair carries half of the
k
power related to the oscillation with frequency fk = N Fs (Fs is the sampling
frequency). To recover the total power of oscillations at frequency fk we need
to sum the two parts. That is:
1 2 2
P (fk ) = |X[k]| + |X[N − k]| (2.34)
N
For real signals, the power spectrum is often displayed by plotting only the
power (2.34) for the positive frequencies.
2.4.6 Z -Transform
A more general case of the discrete signal transformation is the Z-transform.
It is especially useful when considering parametric models or filters.
In a more general context, the Z-transform is a discrete version of the
Laplace transform. For a discrete signal x[n] the Z-transform is given by:
∞
X
X(z) = Z{x[n]} = x[n]z −n (2.35)
n=0
Time translation:
Z{x[n − k]} = z −k X(z)
26 Practical Biomedical Signal Analysis Using MATLAB R
Transform of an impulse:
Z{δ[n]} = 1
Z{δ[n − n0 ]} = z −n0
This result will be very useful for discussion of AR model and filtering.
FIGURE 2.5
Illustration of the uncertainty principle. As the observation time shrinks, the
time localization of the observation improves, but the estimate of the frequency
deteriorates.
Mean frequency:
Z ∞
1
f0 = f |X(f )|2 df (2.38)
Ex −∞
Time span: Z ∞
1
σt2 = (t − t0 )2 |x(t)|2 dt (2.39)
Ex −∞
Frequency span:
Z ∞
1
σf2 = (f − f0 )2 |X(f )|2 df (2.40)
Ex −∞
It turns out that the product of the time and frequency span is bounded
[161]:
1
σt2 σf2 ≥ (2.41)
16π 2
The equality is reached by Gabor functions (Gaussian envelope modulated by
cosine). It is important to realize this property, especially when working with
time-frequency representations of a signal. Many different methods of time-
frequency representations make various trade-offs between time and frequency
span but in each of them the inequality (2.41) holds.
28 Practical Biomedical Signal Analysis Using MATLAB R
Introductory Note
The Oddrunargratr follows Guthrunarkvitha III in the Codex Regius; it
is not quoted or mentioned elsewhere, except that the composer of
the “short” Sigurth lay seems to have been familiar with it. The
Volsungasaga says nothing of the story on which it is based, and
mentions Oddrun only once, in the course of its paraphrase of
Brynhild’s prophecy from the “short” Sigurth lay. That the poem
comes from the eleventh century is generally agreed; prior to the
year 1000 there is no trace of the figure of Oddrun, Atli’s sister, and
yet the Oddrunargratr is almost certainly older than the “short”
Sigurth lay, so that the last half of the eleventh century seems to be
a fairly safe guess.
[Contents]
[470]
A serving-maid spake:
Oddrun spake:
Oddrun spake:
[473]
Borgny spake:
Oddrun spake:
[474]
[476]
[478]
[469]
[Contents]
NOTES
[470]
4. Line 1 in the original appears to have lost its second half. In line 2
the word rendered “has happened” is doubtful. The manuscript does
not indicate the speaker of lines 3–4, and a few editors assign them
to Borgny herself.
5. The manuscript does not indicate the speakers. For the woman:
conjectural; the manuscript has instead: “What warrior now | hath
worked this woe?” The manuscript indicates line 3 as beginning a
new stanza. Line 5, apparently modeled on line 4 of stanza 13, is
probably spurious. [472]
9. The manuscript does not name the speaker. In line 2 the word
rendered “earn” is omitted in the manuscript, but nearly all editions
have supplied it. Line 5 is clearly either interpolated or out of place. It
may be all that is left of a stanza which stood between stanzas 15
and 16, or it may belong in stanza 12. [473]
10–20. In the manuscript the order is as follows: 12; 13; 14; 15, 3–4;
10; 11; 16; 17; 18; 19, 1–2; 15, 1–2; 19, 3–4; 20. The changes made
here, following several of the editions, are: (a) the transposition of
stanzas 10–11, which are clearly dialogue, out of the body of the
lament to a position just before it; (b) the transposition of lines 1–2 of
stanza 15 to their present position from the middle of stanza 19.
10. The manuscript does not name the speaker; cf. note on stanzas
10–20.
11. The manuscript does not name the speaker; cf. note on stanzas
10–20. The word rendered “evil” in line 1 is a conjectural addition.
Apparently Borgny was present at Atli’s court while the love affair
between Oddrun and Gunnar was in progress, and criticised Oddrun
for her part in it. A draught, etc.: apparently in reference to a secret
meeting of the lovers.
14. The manuscript indicates line 3, but not line 1, as the beginning
of a new stanza; some editions combine lines 3–4 with lines 3–4 of
stanza 15. Making Buthli plan the marriage of Oddrun and Gunnar
may be a sheer invention of the poet, or may point to an otherwise
lost version of the legend.
15. Lines 1–2 have here been transposed from the middle of stanza
19; cf. note on stanzas 10–20. Wish-maid: a Valkyrie, so called
because the Valkyries fullfilled Othin’s wish in choosing the slain
heroes for Valhall. The reference to Brynhild as a Valkyrie by no
means fits with the version of the story used in stanzas 16–17, and
the poet seems to have attempted to combine the two contradictory
traditions; cf. Fafnismol, note on stanza 44. In the manuscript
stanzas 10–11 follow line 4 of stanza 15. [475]
16. In stanzas 16–17 the underlying story seems to be the one used
in Sigurtharkvitha en skamma (particularly stanzas 32–39), and
referred to in Guthrunarkvitha I, 24, wherein Gunnar and Sigurth lay
siege to Atli’s city (it here appears as Brynhild’s) and are bought off
only by Atli’s giving Brynhild to Gunnar as wife, winning her consent
thereto by falsely representing to her that Gunnar is Sigurth. This
version is, of course, utterly at variance with the one in which Sigurth
wins Brynhild for Gunnar by riding through the ring of flames, and is
probably more closely akin to the early German traditions. In the
Nibelungenlied Brynhild appears as a queen ruling over lands and
peoples. Fafnir’s slayer: Sigurth.
20. Grani’s burden: the treasure won by Sigurth from Fafnir; cf.
Fafnismol, concluding prose. The manuscript marks line 3 as
beginning a new stanza, as also in stanzas 21 and 22.
23. Murky wood: the forest which divided Atli’s realm from that of the
Gjukungs is in Atlakvitha, 3, called Myrkwood. This hardly accords
with the extraordinary geography of stanzas 28–29, or with the
journey described in Guthrunarkvitha II, 36. [477]
26. If a stanza has been lost after stanza 25, it may well have told of
Atli’s treacherous invitation to the Gjukungs to visit him; cf. Drap
Niflunga, which likewise tells of the slaying of Hogni and Gunnar (the
other).
27. In the manuscript these three lines follow line 2 of stanza 28. No
gap is indicated in the manuscript. In the Volsungasaga Guthrun
gives her brother the harp, with which he puts the serpents to sleep.
The episode is undoubtedly related to the famous thirtieth Aventiure
of the Nibelungenlied, in which Volker plays the followers of Gunther
to sleep before the final battle. [478]
28. In the manuscript the three lines of stanza 27 follow line 2, and
line 3 is marked as beginning a new stanza. Geirmund: nothing
further is known of him, but he seems to be an ally or retainer of Atli,
or possibly his brother. Hlesey: the poet’s geography is here in very
bad shape. Hlesey is (or may be) the Danish island of Läsö, in the
Kattegat (cf. Harbarthsljoth, 37 and note), and thither he has
suddenly transported not only Gunnar’s death-place but Atli’s whole
dwelling (cf. stanza 29), despite his previous references to the ride to
Hunland (stanzas 3–4) and the “murky wood” (stanza 23).
Geirmund’s home, where Oddrun has gone, is separated from
Hlesey and Atli’s dwelling by a sound (stanza 29). However,
geographical accuracy is seldom to be looked for in heroic epic
poetry.
29. Many editions combine this stanza with lines 3–4 of stanza 28.
The sound: cf. note on stanza 28.
32. Some editions make line 4 a statement of the poet’s, and not part
of Oddrun’s speech. [480]
[Contents]
ATLAKVITHA EN GRÖNLENZKA
The Greenland Lay of Atli
[Contents]
Introductory Note
There are two Atli poems in the Codex Regius, the Atlakvitha (Lay of
Atli) and the Atlamol (Ballad of Atli). The poems are not preserved or
quoted in any other old manuscript, but they were extensively used
by the compilers of the Volsungasaga. In the manuscript
superscription to each of these poems appears the word
“Greenland,” which has given rise to a large amount of argument.
The scribe was by no means infallible, and in this case his statement
proves no more than that in the period round 1300 there was a
tradition that these two poems originated in the Greenland
settlement.
The two Atli poems deal with substantially the same material: the
visit of the sons of Gjuki to Atli’s court, their deaths, and the
subsequent revenge of their sister, Guthrun, Atli’s wife, on her
husband. The shorter of the two, the Atlakvitha, tells the story with
little elaboration; the Atlamol, with about the same narrative basis,
adds many details, some of them apparently of the poet’s invention,
and with a romantic, not to say sentimental, quality quite lacking in
the Atlakvitha. Both poems are sharply distinguished from the rest of
the collection by their metrical form, which is the Malahattr (used
irregularly also in the Harbarthsljoth), employed consistently and
smoothly in the Atlamol, and with a considerable mixture of what
appear to be Fornyrthislag lines (cf. Introduction) in the Atlakvitha.
[Contents]
[483]