Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix cphd optional pvp read #21

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions IO/phase_history/cphd/convert_to_cphd.m
Original file line number Diff line number Diff line change
Expand Up @@ -280,14 +280,27 @@ function write_cphd_vbmeta(cphd_fid, cphd_meta, nbdata)
vectorParametersFlatten = rmfield(vectorParametersFlatten, 'RcvAntenna');
vectorParametersFlatten = setstructfields(vectorParametersFlatten, cphd_meta.PVP.RcvAntenna);
end
if isfield(vectorParametersFlatten, 'AddedPVP')
vectorParametersFlatten = rmfield(vectorParametersFlatten, 'AddedPVP');
for i = 1:numel(cphd_meta.PVP.AddedPVP)
try
addedPVP = cphd_meta.PVP.AddedPVP{i};
catch
addedPVP = cphd_meta.PVP.AddedPVP(i);
end
vectorParametersFlatten.(addedPVP.Name).Offset = addedPVP.Offset;
vectorParametersFlatten.(addedPVP.Name).Size = addedPVP.Size;
vectorParametersFlatten.(addedPVP.Name).Format = addedPVP.Format;
end
end
if isfield(vectorParametersFlatten,'TxPulse')
vectorParametersFlatten = rmfield(vectorParametersFlatten, 'TxPulse');
vectorParametersFlatten = setstructfields(vectorParametersFlatten, cphd_meta.PVP.TxPulse);
end
if isfield(vectorParametersFlatten,'TxAntenna')
vectorParametersFlatten = rmfield(vectorParametersFlatten, 'TxAntenna');
vectorParametersFlatten = setstructfields(vectorParametersFlatten, cphd_meta.PVP.TxPulse.TxAntenna);
end
vectorParametersFlatten = setstructfields(vectorParametersFlatten, cphd_meta.PVP.TxAntenna);
end
vectorParametersCell = fieldnames(vectorParametersFlatten);
vb_array = zeros(cphd_meta.Data.NumBytesPVP/8,length(nbdata.TxTime));
for i = 1:length(vectorParametersCell)
Expand Down
48 changes: 24 additions & 24 deletions IO/phase_history/cphd/open_cphd_reader.m
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,27 @@
% from file the vector-based metadata for the selected vectors, but it
% hardly seems necessary as fast as this goes.
vectorParametersFlatten = xml_meta.PVP;
if isfield(vectorParametersFlatten,'RcvAntenna')
vectorParametersFlatten = rmfield(vectorParametersFlatten, 'RcvAntenna');
vectorParametersFlatten = setstructfields(vectorParametersFlatten, xml_meta.PVP.RcvAntenna);
end
if isfield(vectorParametersFlatten, 'AddedPVP')
vectorParametersFlatten = rmfield(vectorParametersFlatten, 'AddedPVP');
for i = 1:numel(xml_meta.PVP.AddedPVP)
try
addedPVP = xml_meta.PVP.AddedPVP{i};
catch
addedPVP = xml_meta.PVP.AddedPVP(i);
end
vectorParametersFlatten.(addedPVP.Name).Offset = addedPVP.Offset;
vectorParametersFlatten.(addedPVP.Name).Size = addedPVP.Size;
vectorParametersFlatten.(addedPVP.Name).Format = addedPVP.Format;
end
end
if isfield(vectorParametersFlatten,'TxAntenna')
vectorParametersFlatten = rmfield(vectorParametersFlatten, 'TxAntenna');
vectorParametersFlatten = setstructfields(vectorParametersFlatten, xml_meta.PVP.TxAntenna);
end
vectorParametersCell = fieldnames(vectorParametersFlatten);
% Iterate through channels to extract vector-based metadata
BYTES_PER_ELEMENT = 8; % Everything in vector-based metadata is of type double
Expand All @@ -55,30 +76,9 @@
vb_array = fread(fid, [(xml_meta.Data.NumBytesPVP/BYTES_PER_ELEMENT) xml_meta.Data.Channel(i).NumVectors], 'double');
% Distribute vector-based metadata into a structure
for j = 1:numel(vectorParametersCell)
if(contains(vectorParametersCell{j},'AddedPVP'))
for jj = 1:numel(xml_meta.PVP.(vectorParametersCell{j}))
try
vbp_all(i).(xml_meta.PVP.(vectorParametersCell{j}){jj}.Name) = ...
vb_array(xml_meta.PVP.(vectorParametersCell{j}){jj}.Offset+...
(1:xml_meta.PVP.(vectorParametersCell{j}){jj}.Size),:).';
catch
vbp_all(i).(xml_meta.PVP.(vectorParametersCell{j}).Name) = ...
vb_array(xml_meta.PVP.(vectorParametersCell{j}).Offset+...
(1:xml_meta.PVP.(vectorParametersCell{j}).Size),:).';
end
end
elseif(contains(vectorParametersCell{j},{'TxAntenna','RcvAntenna'}))
antennaVectorParametersCell = fieldnames(xml_meta.PVP.(vectorParametersCell{j}));
for jj = 1:numel(antennaVectorParametersCell)
vbp_all(i).(vectorParametersCell{j}).(antennaVectorParametersCell{jj}) = ...
vb_array(xml_meta.PVP.(vectorParametersCell{j}).(antennaVectorParametersCell{jj}).Offset+...
(1:xml_meta.PVP.(vectorParametersCell{j}).(antennaVectorParametersCell{jj}).Size),:).';
end
else
vbp_all(i).(vectorParametersCell{j}) = ...
vb_array(xml_meta.PVP.(vectorParametersCell{j}).Offset+...
(1:xml_meta.PVP.(vectorParametersCell{j}).Size),:).';
end
vbp_all(i).(vectorParametersCell{j}) = ...
vb_array(vectorParametersFlatten.(vectorParametersCell{j}).Offset+...
(1:vectorParametersFlatten.(vectorParametersCell{j}).Size),:).';
end
end

Expand Down
2 changes: 1 addition & 1 deletion IO/phase_history/crsd/open_crsd_reader.m
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
end
if isfield(vectorParametersFlatten,'TxAntenna')
vectorParametersFlatten = rmfield(vectorParametersFlatten, 'TxAntenna');
vectorParametersFlatten = setstructfields(vectorParametersFlatten, xml_meta.PVP.TxPulse.TxAntenna);
vectorParametersFlatten = setstructfields(vectorParametersFlatten, xml_meta.PVP.TxAntenna);
end
vectorParametersCell = fieldnames(vectorParametersFlatten);
% Iterate through channels to extract vector-based metadata
Expand Down