## Computational Neuro: MATLab Basics

This semester, I took on Computational Neuroscience with lab. It’s been a difficult class (I always say that) by it’s been amazing to learn how to use MATLab in neural coding sequences in my Last semester of college. Here’s some of my notes on the basics of neural coding within MATLab!

## Before we get started…

Here is the basic syntax of MATLab. MATLab works in array that store information about variables. These arrays can be scalars, vectors, or matrices. The information that they hold can have various values, from logical numbers, to functions, to imaginary numbers and place holders.

## Basic syntax

Example Description
`x = 9` Create variables with the equal sign (`=`).
The left-side (`x`) is the variable name containing the value on the right-side (`pi`).
`y = sin(1)` You can provide inputs to a function using parentheses.

## Desktop management

Function Example Description
`save` `save data.mat` Save your current workspace to a MAT-file.
`load` `load data.mat` Load the variables in a MAT-file to the Workspace.
`clear` `clear` Clear all variables from the Workspace.
`clc` `clc` Clear all text from the Command Window.
`format` `format long` Change how numeric output is displayed.

## Array types

Example Description
`4` scalar
`[3 5]` row vector
`[1;3]` column vector
`[3 4 5;6 7 8]` matrix

## Evenly-spaced vectors

Example Description
`1:4` Create a vector from `1` to `4`, spaced by `1`, using the colon (`:`) operator.
`1:0.5:4` Create a vector from `1` to `4`, spaced by `0.5`.
`linspace(1,10,5)` Create a vector with `5` elements. The values are evenly spaced from `1` to `10`.

## Creating matrices

Example Description
`rand(2)` Create a square matrix with `2` rows and `2` columns.
`zeros(2,3)` Create a rectangular matrix with `2` rows and `3` columns.

## Indexing

Example Description
`A(end,2)` Access the element in the second column of the last row.
`A(2,:)` Access the entire second row
`A(1:3,:)` Access all columns of the first three rows.
`A(2) = 11` Change the value of the second element an array to `11`.

## Array operations

Example Description
```[1 1; 1 1]*[2 2;2 2]
ans =
4     4
4     4```
Perform matrix multiplication.
```[1 1; 1 1].*[2 2;2 2]
ans =
2     2
2     2```
Perform element-wise multiplication.

## Multiple outputs

Example Description
`[xrow,xcol] = size(x)` Save the number of rows and columns in `x` to two different variables.
`[xMax,idx] = max(x)` Calculate the maximum value of `x` and its corresponding index value.

## Documentation

Example Description
`doc randi` Open the documentation page for the `randi` function.

## Plotting

Example Description
`plot(x,y,"ro-","LineWidth",5)` Plot a red (`r`) dashed (`--`) line with a
circle (`o`) marker, with a heavy line width.
`hold on` Add the next line to existing plot.
`hold off` Create a new axes for the next plotted line.
`title("My Title")` Add a label to a plot.

## Using tables

Example Description
`data.HeightYards` Extract the variable `HeightYards` from
the table `data`.
`data.HeightMeters = data.HeightYards*0.9144` Derive a table variable from existing data.

## Logicals

Example Description
`[5 10 15] > 12` Compare a vector to the value `12`.
`v1(v1 > 6)` Extract all elements in `v1` that are greater than `6`.
`x(x==999) = 1` Replace all values in `x` that are equal to `999` with the value `1`.

## Programming

Example Description
```if x > 0.5
y = 3
else
y = 4
end```
If `x` is greater than `0.5`, set the value of `y` to `3`.

Otherwise, set the value of `y` to `4`.

```for c = 1:3
disp(c)
end```
The loop counter (`c`) progresses through the
values `1:3` (`1``2`, and `3`).The loop body displays each value of `c`.