Skip to content
Snippets Groups Projects
Commit fef7ff43 authored by leprob001's avatar leprob001
Browse files

Bugfix, vertical velocities are now integrated and calculated correctly.

parent fe96fb14
No related branches found
No related tags found
No related merge requests found
......@@ -15,7 +15,7 @@ artoaGui.trajectoryOutput.legendHorizontalVelocities.Visible = 'off';
artoaGui.trajectoryOutput.axesHorizontalVelocities.Visible = 'off';
artoaGui.trajectoryOutput.selectTrajectoryHintHorizontalVelocities.Visible = 'on';
%% Hide vertical velocities plot
%structfun(@delete, artoaGui.trajectoryOutput.verticalVelocitiesHandles);
delete(artoaGui.trajectoryOutput.verticalVelocitiesHandle);
artoaGui.trajectoryOutput.legendVerticalVelocities.Visible = 'off';
artoaGui.trajectoryOutput.axesVerticalVelocities.Visible = 'off';
artoaGui.trajectoryOutput.selectTrajectoryHintVerticalVelocities.Visible = 'on';
......
......@@ -71,6 +71,13 @@ artoa.controller.track.trajectoryOutput.showLeftSidebarPlots();
);
%% Plot vertical velocities
[ ...
artoaGui.trajectoryOutput.verticalVelocitiesHandle, ...
artoaGui.trajectoryOutput.legendVerticalVelocities ...
] = artoa.trajectory.plotVerticalVelocities( ...
artoaGui.trajectoryOutput.axesVerticalVelocities, ...
artoaWorkspace.trajectoryOutput.trajectories{selectedRow} ...
);
%% Replace track parameter
if artoaWorkspace.trajectoryOutput.updateTrackParameterWindow
......
......@@ -17,49 +17,55 @@ function [verticalVelocity, time_dummy] = vervelo(pTime, pPressure, pInterval, p
% Dhruv Balwada 9 July 2012 : added lines as time_dummy was not assigned in
% methods other than "SPLINE"
if nargin < 4 % was 3
pMethod='spline';
if nargin < 4
pMethod = 'spline';
end
if nargin < 5 % was 4
pNop=1;
if nargin < 5
pNop = 1;
end
verticalVelocity=ones(size(pPressure))*NaN;
verticalVelocity = ones(size(pPressure)) * NaN;
if strcmp(pMethod,'average')
for ix=1:length(pPressure)
if ~((ix-pNop < 1) || (ix+pNop > length(pPressure)))
if ~any(isnan(pPressure([ix-pNop,ix+pNop])))
verticalVelocity(ix)=-(pPressure(ix+pNop)-pPressure(ix-pNop))/(pInterval*2*pNop);
if strcmp(pMethod, 'average')
for ix = 1:length(pPressure)
if ~((ix - pNop < 1) || (ix + pNop > length(pPressure)))
if ~any(isnan(pPressure([ix - pNop, ix + pNop])))
verticalVelocity(ix) = -(pPressure(ix + pNop) - pPressure(ix - pNop)) / (pInterval * 2 * pNop);
end
end
end
time_dummy=pTime;
elseif strcmp(pMethod,'backward')
for ix=1:length(pPressure)
if ~(ix-pNop < 1)
if ~any(isnan(pPressure([ix-pNop,ix])))
verticalVelocity(ix)=-(pPressure(ix)-pPressure(ix-pNop))/(pInterval*pNop);
time_dummy = pTime;
elseif strcmp(pMethod, 'backward')
for ix = 1:length(pPressure)
if ~(ix - pNop < 1)
if ~any(isnan(pPressure([ix - pNop, ix])))
verticalVelocity(ix) = -(pPressure(ix) - pPressure(ix - pNop)) / (pInterval * pNop);
end
end
end
time_dummy=pTime;
elseif strcmp(pMethod,'forward')
for ix=1:length(pPressure)
if ~(ix+pNop > length(pPressure))
if ~any(isnan(pPressure([ix,ix+pNop])))
verticalVelocity(ix)=-(pPressure(ix+pNop)-pPressure(ix))/(pInterval*pNop);
time_dummy = pTime;
elseif strcmp(pMethod, 'forward')
for ix = 1:length(pPressure)
if ~(ix + pNop > length(pPressure))
if ~any(isnan(pPressure([ix, ix + pNop])))
verticalVelocity(ix) = -(pPressure(ix + pNop) - pPressure(ix)) / (pInterval * pNop);
end
end
end
time_dummy=pTime;
elseif strcmp(pMethod,'spline')
[time_dummy, ~, w] = artoa.data.splineWithDummy(pTime,pPressure,'NaN',pInterval/86400); % [dbar per day]
time_dummy = pTime;
elseif strcmp(pMethod, 'spline')
[time_dummy, ~, w] = artoa.data.splineWithDummy( ...
pTime, ...
pPressure, ...
'NaN', ...
pInterval / 86400 ... % [dbar per day]
);
% interval shoudl
% be in decimal
% day, not seconds.
w = w * 1000/(3600*24) ; % conversion to mm/s
w = w * 1000 / (3600 * 24) ; % conversion to mm/s
verticalVelocity = -w(:); % vertical velocities are positive upward
end
......@@ -214,6 +214,7 @@ trajectoryVelocities.horizontalTotal = [];
trajectoryVelocities.horizontalLongitude = [];
trajectoryVelocities.horizontalLatitude = [];
trajectoryVelocities.vertical = [];
trajectoryVelocities.verticalDates = [];
% trajectoryTimeDivergenceToGps = struct();
% trajectoryTimeDivergenceToGps.duration = [];
% trajectoryTimeDivergenceToGps.date = [];
......@@ -264,23 +265,26 @@ for oCombination = 1:size(soundsourceCombinations, 1)
segmentHorizontalVelocityTotal, ...
segmentHorizontalVelocityLatitude, ...
segmentHorizontalVelocityLongitude ...
] = artoa.data.horvelo( ...
] = artoa.data.calculateHorizontalVelocity( ...
segmentPositions(:, 1), ...
segmentPositions(:, 2), ...
pTrackingParameter.interpolationInterval/24*86400 ...
pTrackingParameter.interpolationInterval / 24 * 86400 ...
);
trajectoryVelocities.horizontalTotal = [trajectoryVelocities.horizontalTotal; segmentHorizontalVelocityTotal];
trajectoryVelocities.horizontalLatitude = [trajectoryVelocities.horizontalLatitude; segmentHorizontalVelocityLatitude];
trajectoryVelocities.horizontalLongitude = [trajectoryVelocities.horizontalLongitude; segmentHorizontalVelocityLongitude];
% calculate vertical velocities
[segmentVerticalVelocity] = artoa.data.vervelo( ...
segmentDates, ...
pPressureAndDate{1}(ismember(pPressureAndDate{2}, segmentDates)), ...
pTrackingParameter.interpolationInterval/24*86400, ...
% get intersecting dates
verticalVelocityDates = intersect(pPressureAndDate{2}, segmentDates);
[segmentVerticalVelocity, segmentVerticalDates] = artoa.data.calculateVerticalVelocity( ...
verticalVelocityDates, ...
pPressureAndDate{1}(ismember(pPressureAndDate{2}, verticalVelocityDates)), ...
pTrackingParameter.interpolationInterval / 24 * 86400, ...
'average' ...
);
trajectoryVelocities.vertical = [trajectoryVelocities.vertical; segmentVerticalVelocity];
trajectoryVelocities.verticalDates = [trajectoryVelocities.verticalDates; segmentVerticalDates];
% calculate time divergence to gps
% get all sat dates
......
function [handleHorizontalVelocities, handleLegend] = plotVerticalVelocities(pAxesHandle, pTrajectory)
function [handleVerticalVelocities, handleLegend] = plotVerticalVelocities(pAxesHandle, pTrajectory)
%CALCULATERESIDUALS Summary of this function goes here
% Detailed explanation goes here
%% Setup return variables
handleHorizontalVelocities = struct();
%% Get required data
velocities = pTrajectory.velocities;
rafosDate = pTrajectory.date;
rafosDate = velocities.verticalDates;
%% Clear axes
cla(pAxesHandle);
......@@ -15,7 +12,7 @@ cla(pAxesHandle);
%% Plot data
legendText = {'w'};
hold(pAxesHandle, 'on');
handleHorizontalVelocities.vertical = plot(pAxesHandle, rafosDate, velocities.vertical, '.-');
handleVerticalVelocities = plot(pAxesHandle, rafosDate, velocities.vertical, '.-');
hold(pAxesHandle, 'off');
%% Setup legend
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment