# Matlab

## Toolboxes

• [MIDI Toolbox] by Petri Toiviainen
• [MIR Toolbox] by Olivier Lartillot
• [MoCap Toolbox] by Petri Toiviainen
• [MAT toolbox] by Bob Sturm

## Basic Matlab

Here we go through some of the basic steps in Matlab.

### Basic operations

Perform simple operation:

```2+2
```

If using a semicolon at the end, the answer will still be calculated but not output:

```2+2;
```

Set a variable:

```a=2
b=3
```

Perform operation on variables:

```a+b
```

Store in a new value

```c=a+b
```

### Basic operators

• - Subtraction
• Multiplication
• / Division
• ^ Power
• ( ) Specify evaluation order

### Basic Unix commands

Find current working directory:

```pwd
```

List directory content

```ls
```

Move up one folder:

```cd ..
```

Move into folder

```cd folderName
```

### Matrices

Set a matrix:

```d=[1 2 3; 4 5 6; 7 8 9]
```

Sum over each column:

```sum(d)
```

Add a value to all cells:

```e=d+2
```

Do operations on two matrices:

```e+d
```

Get value from one cell

```d(2,2)
```

Get value from one column: d(:,2) Get value from one row: d(2,:)

### Basic statistics

All standard statistical measures can easily be calculated in Matlab:

```min(f)
max(f)
mean(f)
median(f)
```

Cross-correlation of two inputs:

```xcorr(a(:,2),a(:,3))
```

### Basic plotting

To create a new figure:

```figure;
```

Generate a signal with 100 random values:

```f=randn(100,1)
```

Then it is possible to use different plotting functions:

```plot(f)
hist(f)
boxplot(f)
```

### Import an audio file

Import an audio file (.wav):

```[y,fs,nbits]=wavread('fridans.wav')
```

### Export

Write matrix 'a' into a CSV file called 'piano4.csv':

```csvwrite('piano4.csv',a)
```

### Smoothing

Simple IIR-filtering:

```smooth(x)
```
```smooth(x,'sgolay',3)
```

### Spectrogram

Make a spectrogram the old way:

```specgram(a(:,1))
```

The new way:

```spectrogram  % do fft
imagesc      % to plot a spectrogram as vector graphics.
```

## MIRToolbox

The MIRToolbox can be installed anywhere on your system, just remember to set the path correctly (under File -> Set path). If it is installed correctly, you should be able to type the following to check the overview of functions:

```help mirtoolbox
```

Load a sound file:

```a=miraudio(‘bugge1.wav’)
```

To get to the actual data

```mirgetdata(a);
```

Then it is possible to plot the waveform directly:

```plot(a_d)
```
```mirenvelope(a)
mirenvelope(a,’Diff’)
```
```mirfilterbank(a)
mirfilterbank(a, ‘Bark’)
```

Calculate spectrum:

```mirspectrum(a)
mirspectrum(a,'Min',100,'Max',1000)
mirspectrum(a,'Mel')
mirspectrum(a,'Bark')
```

Use the frame message to plot a spectrogram:

```mirspectrum(a,'Frame',1,'Min',100,'Max',1000,'dB')
mirspectrum(a,'Frame',0.05,'Max',2000)
mirspectrum(a,'Frame',0.05,'Max',3000,'dB')
```

Enhance by summing up values (to find harmonic components):

```mirspectrum(a,'Sum','Frame',0.05,'Max',1000)
```

Or normalize values

```mirspectrum(b,'Frame','Max',5000,'Normal')
```

Segmentation can be done with:

```mirsegment(b)
mirsegment(b,'KernelSize',32)
```

Autocorrelation:

```mirautocor(a)
```

Looking at the spectral flux:

```mirflux(a)
```