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