====== linearisePhi.m =====
**Class:** Function
**Description:** Calculates and inserts the fullPhi field of [[usage:tracking#outputs|procTracks]]. fullPhi is based on phi, but has had increments of 180 degrees added and subtracted to allow you to smoothly keep track of a single pole.
**Author:** Oliver J. Meacock
function procTracks = linearisePhi(procTracks)
%LINEARISEPHI takes the phi field of the input version of procTracks
%(defined nematically, so between -90 and 90) and adds or subtracts
%increments of 180 to each position in the track to ensure phi keeps track
%of a single pole.
%
% INPUTS:
% procTracks: The output of the tracking module of FAST, stored in
% the 'Tracks.mat' file.
%
% OUTPUTS:
% procTracks: Version of procTracks with a new 'fullPhi' field, which
% contains the wrapped version of phi.
%
% Author: Oliver J. Meacock, (c) 2019
for i = 1:size(procTracks,2)
phiDiff = diff(procTracks(i).phi);
stepsUp = phiDiff < -90;
stepsDown = phiDiff > 90;
intSteps = cumsum(stepsUp - stepsDown);
intSteps = [0; intSteps];
procTracks(i).fullPhi = procTracks(i).phi + intSteps*180;
end
**Example usage:**
%Apply the linearisePhi function to a given procTracks structure
procTracks = linearisePhi(procTracks);
%Plot phi before and after linearisation
plot(procTracks(155).phi)
hold on
plot(procTracks(155).fullPhi)
xlabel('Time')
ylabel('Phi (degrees)')
legend('phi','fullPhi')
**Example output:**
{{ :post:linearisephitest.png?400 }}