# Octave Cheatsheet

## Odes in Octave

Ode support comes packaged with Octave 4.4.1.

The following example simulates an RC circuit driven by an input voltage.

$\frac{dV_c}{dt} = \frac{V_{in}(t) - V_c}{RC}$
clear

# Represent the ODE state-space, dx/dt = Ax + Bu
# x = vc, A = -1/RC, B = 1/RC, u = vin
function [xdot] = odeRC(t, x0, R, C, tin, vin)
vf = interp1(tin, vin, t);
vr = vf - x0(1);
xdot = zeros(size(x0));
xdot(1) = vr / (R * C);
endfunction

T0 = 0.0;
TN = 2e-2;

R = 1e3;
C = 1e-6;

Vs = 5.0;

tsim = linspace(T0, TN, 1001);
vin = Vs * ones(size(tsim));
vin(101:401) = vin(101:401) * 0.0;
vin(501:601) = vin(501:601) * 0.0;

x0 = [Vs];
opt = odeset('MaxStep', 1e-4, 'Abstol', 1e-6, 'RelTol', 1e-6);

[t, x] = ode45(@odeRC, [T0, TN], x0, ops, R, C, tsim, vin);

# Plotting
figure('color', [0.4, 0.0, 0.2]);
ax = axes();
plot(tsim, vin, ':', 'lineWidth', 3, t, x, 'lineWidth', 3);

legend({'Input Voltage', 'Capacitor Voltage'}, ...
'TextColor', 'w', 'FontSize', 12, ...
'color', 'k', 'Location', 'southeast');
xlabel('time (s)', 'color', 'w');
ylabel('voltage', 'color', 'w');
axis([T0, TN, -1, 6]);
grid on;
set(ax, 'color', 'k', 'ycolor', 'w', 'xcolor', 'w', ...
'linewidth', 2,'gridlinestyle', '--', ...
'gridalpha', 0.25, 'FontSize', 12);


## Installing a Package from Forge

See octave forge for packages available

In an octave terminal:

pkg install -forge name


pkg install name-ver.tar.gz

Include the package an octave script.m file:
pkg load name