File Exchange

image thumbnail

ISO 226:2003 Normal equal-loudness-level contours

version (715 KB) by Christopher Hummersone
Return sound pressure levels of pure tone frequencies at specified loudness level(s).


Updated 05 May 2018

GitHub view license on GitHub

NOTE: this function is now available from the IoSR Matlab Toolbox as iosr.auditory.iso226.
ISO 226:2003 Normal equal-loudness-level contours
[spl,f] = iso226(phon)
[spl,f] = iso226(phon,fq)
... = iso226(phon,fq,sq)
... = iso226(phon,[],sq)

[SPL,F] = ISO226(PHON) returns the sound pressure level
(SPL) (dB) of pure tone frequencies F (Hz) at the
loudness level(s) PHON. The values are calculated
according to ISO 226:2003 using the reference
frequencies specified in the standard. According to the
standard, PHON is only valid at all frequencies if
20<=PHON<80 (although the function will return SPL
values outside of this range).

PHON may be an array of any size; SPL and F will be of
size [1,29,M,N,P,...] where M,N,P,... are the dimensions
of PHON.

[SPL,F] = ISO226(PHON,FQ) returns the SPL of the pure
tone frequencies in FQ at the specified loudness
level(s). According to the standard, FQ is only valid
below 12.5 kHz (although the function will extrapolate
SPL values outside of this range).

FQ may be an array of any size; SPL and F will be of
size [Q,R,S,...,M,N,P,...] where Q,R,S,... are the
dimensions of FQ.

... = iso226(phon,fq,sq) specifies whether singleton
dimensions will be removed from the output. With
sq=false, singleton dimensions will be retained
(default), else they will be removed.

... = iso226(phon,[],sq) uses the standard reference
frequencies for SPL calculations.


% Plot equal-loudness contours between 20 and 80 phon

% Calculate SPLs
phons = 20:10:80;
[spl,f] = iso226(phons,[],true);

% plot
figure; semilogx(f,spl)
set(gca,'xlim',[min(f(:)) max(f(:))])
title('Equal loudness contours for different loudness levels (in phons)')
xlabel('Frequency [Hz]')
ylabel('SPL [dB]')

Cite As

Christopher Hummersone (2020). ISO 226:2003 Normal equal-loudness-level contours (, GitHub. Retrieved .

Comments and Ratings (4)

TK Fulton

Thank you. Very useful.

jing zhang


Tremendously helpful. Thanks!

Extremely tidy code, very clearly documented and commented. It is a pleasure to read through and follow. Easy to use, comes complete with working examples.

This is a superb addition to MATLAB File Exchange, and should be an example for any beginners.

Minor point: note spelling: differnt -> different. Use a spellchecker!


Migrated to GitHub.

Corrected spelling in help, thanks to Stephen Cobeldick.

Added sq option for removing singleton dimensions from output.

MATLAB Release Compatibility
Created with R2015a
Compatible with any release
Platform Compatibility
Windows macOS Linux