hz2mel

Convert from hertz to mel scale

Since R2019a

Syntax

``mel = hz2mel(hz)``
``mel = hz2mel(hz,MelStyle=style)``

Description

example

````mel = hz2mel(hz)` converts values in hertz to values on the mel frequency scale.```
````mel = hz2mel(hz,MelStyle=style)` specifies whether to use the Slaney-style or O'Shaughnessy-style mel scale.```

Examples

collapse all

Set two bounding frequencies in Hz and then convert them to the mel scale.

`b = hz2mel([20,8000]);`

Generate a row vector of 32 values uniformly spaced on the mel scale.

`melVect = linspace(b(1),b(2),32);`

Convert the row vector of values into equivalent frequencies in Hz.

`hzVect = mel2hz(melVect);`

Plot the two vectors for comparison. As mel values increase linearly, Hz values increase exponentially.

```plot(melVect,hzVect,'o') title('Mel vs Hz') xlabel('Mel') ylabel('Hz') grid on```

Create a vector containing frequencies from 0 Hz to 8000 Hz.

`hz = 0:8e3;`

Convert the frequencies to the mel scale. By default, `hz2mel` uses the O'Shaughnessy-style mel scale.

`mel_oshaughnessy = hz2mel(hz);`

Convert the frequencies using the Slaney-style mel scale by calling `hz2mel` with `MelStyle` set to `"slaney"`.

`mel_slaney = hz2mel(hz,MelStyle="slaney");`

Plot both the O'Shaughnessy-style and Slaney-style mel frequencies against the frequency in Hz.

```plot(hz,mel_oshaughnessy) ylabel("Mel (O'Shaughnessy)") yyaxis right plot(hz,mel_slaney) ylabel("Mel (Slaney)") xlabel("Hertz")```

Input Arguments

collapse all

Input frequency in Hz, specified as a scalar, vector, matrix, or multidimensional array.

Data Types: `single` | `double`

Mel style, specified as `"oshaughnessy"` or `"slaney"`.

Data Types: `char` | `string`

Output Arguments

collapse all

Output frequency on the mel scale, returned as a scalar, vector, matrix, or multidimensional array the same size as `hz`.

Data Types: `single` | `double`

Algorithms

The frequency conversion from Hz to the O'Shaughnessy-style mel scale uses the following formula [1]:

`$mel=2595{\mathrm{log}}_{10}\left(1+\frac{hz}{700}\right)$`

The Slaney-style mel scale follows [2]. The scale is linear with respect to Hz below 1000 Hz, and it is logarithmic above 1000 Hz.

References

[1] O'Shaughnessy, Douglas. Speech Communication: Human and Machine. Reading, MA: Addison-Wesley Publishing Company, 1987.

[2] Slaney, Malcolm. "Auditory Toolbox: A MATLAB Toolbox for Auditory Modeling Work." Technical Report, Version 2, Interval Research Corporation, 1998.

Version History

Introduced in R2019a

expand all