你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-07 04:56:51 +08:00
1. Added new GPR format IPRB/IPRH (Implulse Radar)
2. Fixed the file path issue. The user now can choose a file from a different folder. 3. Added the center frequency as a requirement along with the Tx-Rx distance and the trace step, as it is crucial for the DT1/HD to work with the official Sensors Software. 4. Removed some spaces from the HD header file 5. Added more comments to the script in case anyone want to understand the header structures.
这个提交包含在:
@@ -1,33 +1,38 @@
|
|||||||
% outputfile_converter.m - converts gprMax merged output HDF5 file to RD3, DZT, DT1 files.
|
% outputfile_converter.m - converts gprMax merged output HDF5 file to RD3,
|
||||||
|
% DZT, DT1 and IPRB files.
|
||||||
%
|
%
|
||||||
% Author: Dimitrios Angelis
|
% Author: Dimitrios Angelis
|
||||||
% Copyright: 2017-2018
|
% Copyright: 2017-2018
|
||||||
% Last modified: 25/03/2018
|
% Last modified: 18/07/2018
|
||||||
|
|
||||||
clear, clc, close all;
|
clear, clc, close all;
|
||||||
|
|
||||||
% Select file. Keep file name, path name and file extension ==============
|
% Select file =============================================================
|
||||||
[infile, path] = uigetfile('*.out', 'Select gprMax output file', 'Multiselect', 'Off');
|
[infile, path] = uigetfile('*.out', 'Select gprMax output file', ...
|
||||||
|
'Multiselect', 'Off');
|
||||||
if isequal(infile, 0)
|
if isequal(infile, 0)
|
||||||
erd = errordlg('No output file');
|
infile = [];
|
||||||
but = findobj(erd, 'Style', 'Pushbutton');
|
path = [];
|
||||||
delete(but);
|
HDR = [];
|
||||||
pause(1); close(erd);
|
data = [];
|
||||||
HDR = []; data = [];
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
% File name, path name and file extension =================================
|
||||||
HDR.fname = strrep(lower(infile), '.out', '');
|
HDR.fname = strrep(lower(infile), '.out', '');
|
||||||
HDR.pname = path;
|
HDR.pname = path;
|
||||||
HDR.fext = 'out';
|
HDR.fext = 'out';
|
||||||
|
|
||||||
|
|
||||||
% Read data from HDF5 file ===============================================
|
% Read data from HDF5 file ================================================
|
||||||
|
infile = [HDR.pname infile];
|
||||||
dataex = h5read(infile, '/rxs/rx1/Ex');
|
dataex = h5read(infile, '/rxs/rx1/Ex');
|
||||||
dataey = h5read(infile, '/rxs/rx1/Ey');
|
dataey = h5read(infile, '/rxs/rx1/Ey');
|
||||||
dataez = h5read(infile, '/rxs/rx1/Ez');
|
dataez = h5read(infile, '/rxs/rx1/Ez');
|
||||||
|
|
||||||
|
|
||||||
% Field check ============================================================
|
% Field check =============================================================
|
||||||
if dataey == 0 & dataez == 0
|
if dataey == 0 & dataez == 0
|
||||||
data = dataex';
|
data = dataex';
|
||||||
elseif dataex == 0 & dataez == 0
|
elseif dataex == 0 & dataez == 0
|
||||||
@@ -48,21 +53,25 @@ else
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
% Convert to double precision ============================================
|
% Sigle to double precision ===============================================
|
||||||
data = double(data);
|
data = double(data);
|
||||||
|
|
||||||
|
|
||||||
% The HDF5 file does not contain information about the Tx-Rx separation ==
|
% The HDF5 file does not contain information about the centre frequency of
|
||||||
% distance and the trace step. The user needs to provide this information
|
% the waveform, the Tx-Rx separation distance and the trace step. The user
|
||||||
|
% needs to provide this information.
|
||||||
while 1
|
while 1
|
||||||
prompt = {'Antenna Separation (m)', 'Trace Step (m)'};
|
prompt = {'Waveform Centre Frequency (MHz)', ...
|
||||||
dlg_title = 'gprMax information';
|
'Source-Receiver Distance (m)', 'Trace Step (m)'};
|
||||||
answer = inputdlg(prompt, dlg_title, [1 45]);
|
dlg_title = 'Additional Information';
|
||||||
|
answer = inputdlg(prompt, dlg_title, [1 50]);
|
||||||
answer = str2double(answer);
|
answer = str2double(answer);
|
||||||
if isempty(answer)
|
if isempty(answer)
|
||||||
HDR = []; data = [];
|
HDR = [];
|
||||||
|
data = [];
|
||||||
return
|
return
|
||||||
elseif isnan(answer(1)) || isnan(answer(2)) || answer(2) == 0
|
elseif isnan(answer(1)) || isnan(answer(2)) || isnan(answer(3))...
|
||||||
|
|| answer(1) <= 0 || answer(2) < 0 || answer(3) <=0
|
||||||
continue
|
continue
|
||||||
else
|
else
|
||||||
break
|
break
|
||||||
@@ -70,41 +79,30 @@ while 1
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
% Create header with basic informatio =====================================
|
% Create header with basic information ====================================
|
||||||
info = h5info(infile);
|
HDR.centre_freq = answer(1); % Centre frequency (MHz)
|
||||||
attributes = info.Attributes;
|
HDR.ant_sep = answer(2); % Antenna seperation / Tx-Rx distance (m)
|
||||||
% Antenna name
|
HDR.trac_int = answer(3); % Trace interval / step (m)
|
||||||
if length(attributes) > 4
|
HDR.samp_int = h5readatt(infile, '/', 'dt') * 10^9; % Sampling interval / step (ns)
|
||||||
gMaxV = cell2mat(h5readatt(infile, '/', 'gprMax'));
|
HDR.samp_freq = (1 / HDR.samp_int) * 10^3; % Sampling frequency (MHz)
|
||||||
HDR.antenna = (['gprMax ', gMaxV]);
|
[HDR.num_samp, HDR.num_trac] = size(data); % Number of samples & traces
|
||||||
else
|
HDR.time_window = HDR.num_samp * HDR.samp_int; % Time window (ns)
|
||||||
HDR.antenna = ('gprMax');
|
HDR.antenna = ['gprMax ', num2str(HDR.centre_freq), 'MHz']; % Antenna name
|
||||||
end
|
|
||||||
|
|
||||||
HDR.ant_sep = answer(1); % Tx-Rx separation distance
|
|
||||||
[HDR.num_samp, HDR.num_trac] = size(data); % Samples & traces
|
|
||||||
HDR.trac_int = answer(2); % Trace interval
|
|
||||||
HDR.samp_int = h5readatt(infile, '/', 'dt') * 10^9; % Sampling interval
|
|
||||||
HDR.samp_freq = (1 / HDR.samp_int) * 10^3; % Sampling Frequency
|
|
||||||
HDR.time_window = HDR.num_samp * HDR.samp_int; % Time window
|
|
||||||
|
|
||||||
x = 0 : HDR.trac_int : (HDR.num_trac - 1) * HDR.trac_int;
|
|
||||||
t = HDR.samp_int : HDR.samp_int : HDR.num_samp * HDR.samp_int;
|
|
||||||
|
|
||||||
|
|
||||||
%**************************************************************************
|
%**************************************************************************
|
||||||
%******************************** Optional ********************************
|
%******************************** Optional ********************************
|
||||||
|
|
||||||
% Resample to 1024 samples ================================================
|
% Resample to 1024 samples ================================================
|
||||||
% I usually perform this step for either 512 or 1024 samples (line 98)
|
% I usually perform this step for either 512 or 1024 samples (line 100)
|
||||||
% because many programs cannot load files with more samples.
|
% because many GPR processing software cannot load files with more samples.
|
||||||
tx1 = 1 : HDR.num_samp;
|
tx1 = 1 : HDR.num_samp;
|
||||||
fs1 = 1024 / HDR.num_samp;
|
fs1 = 1024 / HDR.num_samp; % <------- 1024 samples
|
||||||
data = resample(data, tx1, fs1);
|
data = resample(data, tx1, fs1, 'spline');
|
||||||
|
|
||||||
[HDR.num_samp, ~] = size(data); % New number of samples
|
[HDR.num_samp, ~] = size(data); % New number of samples after resampling
|
||||||
HDR.samp_int = HDR.time_window / HDR.num_samp; % New sampling interval
|
HDR.samp_int = HDR.time_window / HDR.num_samp; % New sampling interval (ns) after resampling
|
||||||
HDR.samp_freq = (1 / HDR.samp_int) * 10^3; % New sampling frequency
|
HDR.samp_freq = (1 / HDR.samp_int) * 10^3; % New sampling frequency (MHz) after resampling
|
||||||
|
|
||||||
%**************************************************************************
|
%**************************************************************************
|
||||||
%**************************************************************************
|
%**************************************************************************
|
||||||
@@ -114,9 +112,9 @@ HDR.samp_freq = (1 / HDR.samp_int) * 10^3; % New sampling frequency
|
|||||||
%******************************** Optional ********************************
|
%******************************** Optional ********************************
|
||||||
|
|
||||||
% Data scale ==============================================================
|
% Data scale ==============================================================
|
||||||
data = data * 32767.5 ./ max(max(abs(data)));
|
data = data * 32767.5 ./ max(max(abs(data))); %signal * ((1 - 1 / 2^bitrate) * 32768) / max(signal)
|
||||||
%signal * ((1 - 1 / 2^bitrate) * 32768) / max(signal)
|
data(data >= 32767) = 32767;
|
||||||
data(data >= 32767.5) = 32767;
|
data(data <= -32768) = -32768;
|
||||||
data = round(data);
|
data = round(data);
|
||||||
|
|
||||||
%**************************************************************************
|
%**************************************************************************
|
||||||
@@ -124,8 +122,11 @@ data = round(data);
|
|||||||
|
|
||||||
|
|
||||||
% Plots ===================================================================
|
% Plots ===================================================================
|
||||||
pmin = min(data(:));
|
pmin = min(data(:)); %Minimun plot scale
|
||||||
pmax = max(data(:));
|
pmax = max(data(:)); %Maximum plot scale
|
||||||
|
|
||||||
|
x = 0 : HDR.trac_int : (HDR.num_trac - 1) * HDR.trac_int; %Distance of each trace (m)
|
||||||
|
t = HDR.samp_int : HDR.samp_int : HDR.num_samp * HDR.samp_int; %Time of each sample (ns)
|
||||||
|
|
||||||
% Bscan
|
% Bscan
|
||||||
f1 = figure('Name', 'Bscan', ...
|
f1 = figure('Name', 'Bscan', ...
|
||||||
@@ -134,7 +135,7 @@ f1 = figure('Name', 'Bscan', ...
|
|||||||
'Toolbar', 'Figure');
|
'Toolbar', 'Figure');
|
||||||
|
|
||||||
clims = [pmin pmax];
|
clims = [pmin pmax];
|
||||||
colormap (flipud(bone(256)));
|
colormap (bone(256)); %Black(negative) to white(positive)
|
||||||
im1 = imagesc(x, t, data, clims);
|
im1 = imagesc(x, t, data, clims);
|
||||||
set(im1, 'cdatamapping', 'scaled');
|
set(im1, 'cdatamapping', 'scaled');
|
||||||
title(HDR.fname);
|
title(HDR.fname);
|
||||||
@@ -149,10 +150,11 @@ movegui(f1, 'northeast');
|
|||||||
|
|
||||||
% Frequency Spectrum
|
% Frequency Spectrum
|
||||||
m = 2.^nextpow2(HDR.num_samp);
|
m = 2.^nextpow2(HDR.num_samp);
|
||||||
amp = fft(data, m);
|
|
||||||
|
|
||||||
|
amp = fft(data, m);
|
||||||
amp = (abs(amp(1 : m / 2, :)) / m) * 2;
|
amp = (abs(amp(1 : m / 2, :)) / m) * 2;
|
||||||
amp = mean(amp.');
|
amp = mean(amp.');
|
||||||
|
|
||||||
freq = HDR.samp_freq .* (0 : (m / 2) - 1) / m;
|
freq = HDR.samp_freq .* (0 : (m / 2) - 1) / m;
|
||||||
|
|
||||||
f2 = figure('Name', 'Frequency Spectrum', ...
|
f2 = figure('Name', 'Frequency Spectrum', ...
|
||||||
@@ -170,60 +172,62 @@ box off;
|
|||||||
movegui(f2, 'southeast');
|
movegui(f2, 'southeast');
|
||||||
|
|
||||||
|
|
||||||
% Export option rd3 or dzt or dt1 =========================================
|
% Export option: RD3/RAD or DZT or DT1/HD or IPRB/IPRH ====================
|
||||||
while 1
|
while 1
|
||||||
choice = questdlg('File Type', 'Export', ...
|
prompt = {'1 = RD3, 2 = DZT, 3 = DT1, 4 = IPRB'};
|
||||||
'RD3', 'DZT', 'DT1', 'Default');
|
dlg_title = 'Choose GPR Format';
|
||||||
switch choice
|
answer = inputdlg(prompt, dlg_title, [1 45]);
|
||||||
case 'RD3'
|
answer = str2double(answer);
|
||||||
flg = 1;
|
if isempty(answer)
|
||||||
break
|
return
|
||||||
case 'DZT'
|
elseif ~isnumeric(answer) || answer ~= 1 && answer ~= 2 ...
|
||||||
flg = 2;
|
&& answer ~= 3 && answer ~= 4
|
||||||
break
|
continue
|
||||||
case 'DT1'
|
else
|
||||||
flg = 3;
|
gpr_format = answer;
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
wb = waitbar(0, 'Exporting...', 'Name', 'Exporting File');
|
wb = waitbar(0, 'Exporting...', 'Name', 'Exporting File');
|
||||||
|
|
||||||
|
|
||||||
% RAD / RD3, Mala GeoScience ==============================================
|
% RAD / RD3, Mala GeoScience ==============================================
|
||||||
% Rad is the header file. In this file is all the important
|
% Rad is the header file. In this file is all the important information
|
||||||
% information such as the number of traces, samples, measurement intervals...
|
% such as the number of samples, traces, measurement intervals can be
|
||||||
% Rd3 is the data file. This file contains only the data (amplitudes) in a
|
% found.
|
||||||
% binary form.
|
% Rd3 is the data file. This file contains only the data (amplitude values)
|
||||||
if flg == 1
|
% in a binary form.
|
||||||
|
if gpr_format == 1
|
||||||
% Header structure
|
% Header structure
|
||||||
HDR.fname = HDR.fname; % File name
|
HDR.fname = HDR.fname; % File name
|
||||||
HDR.num_samp = HDR.num_samp; % Number of samples
|
HDR.num_samp = HDR.num_samp; % Number of samples
|
||||||
HDR.samp_freq = HDR.samp_freq; % Sampling frequency
|
HDR.samp_freq = HDR.samp_freq; % Sampling frequency (MHz)
|
||||||
HDR.frequency_steps = 1; % Frequency steps
|
HDR.frequency_steps = 1; % Frequency steps
|
||||||
HDR.signal_pos = 0;
|
HDR.signal_pos = 0; % Signal position
|
||||||
HDR.raw_signal_pos = 0;
|
HDR.raw_signal_pos = 0; % Raw signal position
|
||||||
HDR.distance_flag = 1; % Distance flag: 0 time interval, 1 distance interval
|
HDR.distance_flag = 1; % Distance flag: 0 time interval, 1 distance interval
|
||||||
HDR.time_flag = 0; % Time flag : 0 distance interval, 1 time interval
|
HDR.time_flag = 0; % Time flag : 0 distance interval, 1 time interval
|
||||||
HDR.program_flag = 0;
|
HDR.program_flag = 0; % Program flag
|
||||||
HDR.external_flag = 0;
|
HDR.external_flag = 0; % External flag
|
||||||
HDR.trac_int_sec = 0; % Trace interval in seconds(only if Time flag = 1)
|
HDR.trac_int_sec = 0; % Trace interval in seconds(only if Time flag = 1)
|
||||||
HDR.trac_int = HDR.trac_int; % Trace interval in meters (only if Distance flag = 1)
|
HDR.trac_int = HDR.trac_int; % Trace interval in meters (only if Distance flag = 1)
|
||||||
HDR.operator = 'Unknown';
|
HDR.operator = 'Unknown'; % Operator
|
||||||
HDR.customer = 'Unknown';
|
HDR.customer = 'Unknown'; % Customer
|
||||||
HDR.site = 'gprMax';
|
HDR.site = 'gprMax'; % Site
|
||||||
HDR.antenna = HDR.antenna; % Antenna name
|
HDR.antenna = HDR.antenna; % Antenna name
|
||||||
HDR.antenna_orientation = 'NOT VALID FIELD';
|
HDR.antenna_orientation = 'NOT VALID FIELD'; % Antenna orientation
|
||||||
HDR.ant_sep = HDR.ant_sep; % Antenna seperation (Tx-Rx distance)
|
HDR.ant_sep = HDR.ant_sep; % Antenna seperation / Tx-Rx distance (m)
|
||||||
HDR.comment = '-';
|
HDR.comment = '----'; % Comment
|
||||||
HDR.time_window = HDR.time_window; % Time window
|
HDR.time_window = HDR.time_window; % Time window (ns)
|
||||||
HDR.stacks = 0; % Stacks
|
HDR.stacks = 1; % Stacks
|
||||||
HDR.stack_exponent = 0; % Stack exponent
|
HDR.stack_exponent = 0; % Stack exponent
|
||||||
HDR.stacking_time = 0; % Stacking Time
|
HDR.stacking_time = 0; % Stacking Time
|
||||||
HDR.num_trac = HDR.num_trac; % Number of traces
|
HDR.num_trac = HDR.num_trac; % Number of traces
|
||||||
HDR.stop_pos = HDR.num_trac * HDR.trac_int; % Stop position (meters)
|
HDR.stop_pos = HDR.num_trac * HDR.trac_int; % Stop position (m)
|
||||||
HDR.system_calibration = 0;
|
HDR.system_calibration = 0;
|
||||||
HDR.start_pos = 0; % Start position (meters)
|
HDR.start_pos = 0; % Start position (m)
|
||||||
HDR.short_flag = 1;
|
HDR.short_flag = 1;
|
||||||
HDR.intermediate_flag = 0;
|
HDR.intermediate_flag = 0;
|
||||||
HDR.long_flag = 0;
|
HDR.long_flag = 0;
|
||||||
@@ -287,30 +291,29 @@ if flg == 1
|
|||||||
|
|
||||||
% DZT, Geophysical Survey Systems Inc. (GSSI) =============================
|
% DZT, Geophysical Survey Systems Inc. (GSSI) =============================
|
||||||
% Dzt is a binary file that consists of the file header with all the
|
% Dzt is a binary file that consists of the file header with all the
|
||||||
% important information (number of traces, samples, channels, etc.) followed
|
% important information (number of samples, traces, channels, etc.)
|
||||||
% by the data section.
|
% followed by the data section.
|
||||||
% All information that is needed is contained in this file except the
|
% All the information is contained in this file except the TxRx distance
|
||||||
% TxRx distance (antenna separation). There is a possibility that the
|
% (antenna separation). There is a possibility that the official GSSI
|
||||||
% official GSSI software has stored this information and by using the
|
% software has stored this information and by using the antenna name
|
||||||
% antenna name presents the correct one. All the other software does not
|
% presents the correct one. All the other software does not detect the TxRx
|
||||||
% detect the TxRx distance.
|
% distance.
|
||||||
|
elseif gpr_format == 2
|
||||||
elseif flg == 2
|
|
||||||
% Header structure
|
% Header structure
|
||||||
HDR.fname = HDR.fname; % File name
|
HDR.fname = HDR.fname; % File name
|
||||||
HDR.tag = 255; % Header = 255
|
HDR.tag = 255; % Header = 255
|
||||||
HDR.data_offset = 1024; % Offset to data from the beginning of file
|
HDR.data_offset = 1024; % Offset to data from the beginning of file
|
||||||
HDR.num_samp = HDR.num_samp; % Number of samples
|
HDR.num_samp = HDR.num_samp; % Number of samples
|
||||||
HDR.bits_per_word = 16; % Bits per data word (8, 16, 32)
|
HDR.data_format = 16; % Bits per data word (8, 16, 32)
|
||||||
HDR.binary_offset = 32768; % Binary offset, 8 bit = 128, 16 bit = 32768
|
HDR.binary_offset = 32768; % Binary offset, 8 bit = 128, 16 bit = 32768
|
||||||
HDR.scans_per_second = 0; % Scans per second
|
HDR.scans_per_second = 0; % Scans per second
|
||||||
HDR.scans_per_meter = 1 / HDR.trac_int; % Scans per meter
|
HDR.scans_per_meter = 1 / HDR.trac_int; % Scans per meter
|
||||||
HDR.meters_per_mark = 0; % Meters per mark
|
HDR.meters_per_mark = 0; % Meters per mark
|
||||||
HDR.zero_time_adjustment = 0; % Time zero adjustment (nanoseconds)
|
HDR.zero_time_adjustment = 0; % Time zero adjustment (ns)
|
||||||
HDR.time_window = HDR.time_window; % Time window (with no corrections i.e zero time)
|
HDR.time_window = HDR.time_window; % Time window (with no corrections i.e zero time)
|
||||||
HDR.scans_per_pass = 0; % Scan per pass for 2D files
|
HDR.scans_per_pass = 0; % Scan per pass for 2D files
|
||||||
|
|
||||||
HDR.createdate.sec = 0 / 2; % Structure, date created
|
HDR.createdate.sec = 0 / 2; % Structure, date created
|
||||||
HDR.createdate.min = 0;
|
HDR.createdate.min = 0;
|
||||||
HDR.createdate.hour = 0;
|
HDR.createdate.hour = 0;
|
||||||
HDR.createdate.day = 0;
|
HDR.createdate.day = 0;
|
||||||
@@ -318,59 +321,61 @@ elseif flg == 2
|
|||||||
HDR.createdate.year = 0 - 1980;
|
HDR.createdate.year = 0 - 1980;
|
||||||
|
|
||||||
date_time = clock;
|
date_time = clock;
|
||||||
HDR.modifydate.sec = date_time(6) / 2; % Structure, date modified
|
HDR.modifydate.sec = date_time(6) / 2; % Structure, date modified
|
||||||
HDR.modifydate.min = date_time(5);
|
HDR.modifydate.min = date_time(5);
|
||||||
HDR.modifydate.hour = date_time(4);
|
HDR.modifydate.hour = date_time(4);
|
||||||
HDR.modifydate.day = date_time(3);
|
HDR.modifydate.day = date_time(3);
|
||||||
HDR.modifydate.month = date_time(2);
|
HDR.modifydate.month = date_time(2);
|
||||||
HDR.modifydate.year = date_time(1) - 1980;
|
HDR.modifydate.year = date_time(1) - 1980;
|
||||||
|
|
||||||
HDR.offset_to_range_gain = 0; % Offset to range gain
|
HDR.offset_to_range_gain = 0; % Offset to range gain
|
||||||
HDR.size_of_range_gain = 0; % Size of range gain
|
HDR.size_of_range_gain = 0; % Size of range gain
|
||||||
HDR.offset_to_text = 0; % Offset to text
|
HDR.offset_to_text = 0; % Offset to text
|
||||||
HDR.size_of_text = 0; % Size of text
|
HDR.size_of_text = 0; % Size of text
|
||||||
HDR.offset_to_proc_his = 0; % Offset to processing history
|
HDR.offset_to_proc_his = 0; % Offset to processing history
|
||||||
HDR.size_of_proc_his = 0; % Size of processing hisstory
|
HDR.size_of_proc_his = 0; % Size of processing history
|
||||||
HDR.num_channels = 1; % Number of channels
|
HDR.num_channels = 1; % Number of channels
|
||||||
HDR.dielectric_constant = 8; % Dielectric constant (8 is a random number)
|
HDR.dielectric_constant = 8; % Dielectric constant (8 is a random number)
|
||||||
HDR.top_position = 0; % Top position
|
HDR.top_position = 0; % Top position
|
||||||
|
|
||||||
c = 299792458;
|
c = 299792458;
|
||||||
v = (c / sqrt(HDR.dielectric_constant)) * 10^-9;
|
v = (c / sqrt(HDR.dielectric_constant)) * 10^-9;
|
||||||
HDR.range_depth = v * (HDR.time_window / 2); % Range depth
|
HDR.range_depth = v * (HDR.time_window / 2); % Range depth (m)
|
||||||
|
|
||||||
HDR.reserved = zeros(31, 1); % Reserved
|
HDR.reserved = zeros(31, 1); % Reserved
|
||||||
HDR.data_type = 0;
|
HDR.data_type = 0; % Data type
|
||||||
|
|
||||||
if length(HDR.antenna) == 14 % Antenna name
|
if length(HDR.antenna) == 14 % Antenna name
|
||||||
HDR.antenna = HDR.antenna;
|
HDR.antenna = HDR.antenna;
|
||||||
elseif length(HDR.antenna) < 14
|
elseif length(HDR.antenna) < 14
|
||||||
if verLessThan('matlab', '9.1')
|
if verLessThan('matlab', '9.1')
|
||||||
HDR.antenna = [HDR.antenna repmat(' ', 1, 14 - length(HDR.antenna))];
|
HDR.antenna = [HDR.antenna repmat(' ', ...
|
||||||
|
1, 14 - length(HDR.antenna))];
|
||||||
else
|
else
|
||||||
HDR.antenna = pad(HDR.antenna, 14, 'right');
|
HDR.antenna = pad(HDR.antenna, 14, 'right');
|
||||||
end
|
end
|
||||||
elseif length(HDR.antenna) > 14
|
elseif length(HDR.antenna) > 14
|
||||||
HDR.antenna = HDR.antenna(1 : 14);
|
HDR.antenna = HDR.antenna(1 : 14);
|
||||||
end
|
end
|
||||||
|
|
||||||
HDR.channel_mask = 0; % Channel mask
|
HDR.channel_mask = 0; % Channel mask
|
||||||
|
|
||||||
if length(HDR.fname) == 12
|
if length(HDR.fname) == 12 % Raw file name (File name during survey)
|
||||||
HDR.raw_file_name = HDR.fname; % Raw file name (File name during survey)
|
HDR.raw_file_name = HDR.fname;
|
||||||
elseif length(HDR.fname) < 12
|
elseif length(HDR.fname) < 12
|
||||||
if verLessThan('matlab', '9.1')
|
if verLessThan('matlab', '9.1')
|
||||||
HDR.raw_file_name = [HDR.raw_file_name repmat(' ', 1, 12 - length(HDR.raw_file_name))];
|
HDR.raw_file_name = [HDR.raw_file_name repmat(' ', ...
|
||||||
|
1, 12 - length(HDR.raw_file_name))];
|
||||||
else
|
else
|
||||||
HDR.raw_file_name = pad(HDR.fname, 12, 'right');
|
HDR.raw_file_name = pad(HDR.fname, 12, 'right');
|
||||||
end
|
end
|
||||||
elseif length(HDR.fname) > 12
|
elseif length(HDR.fname) > 12
|
||||||
HDR.raw_file_name = HDR.fname(1:12);
|
HDR.raw_file_name = HDR.fname(1 : 12);
|
||||||
end
|
end
|
||||||
|
|
||||||
HDR.checksum = 0; % Checksum
|
HDR.checksum = 0; % Checksum
|
||||||
HDR.num_gain_points = 0; % Number of gain points
|
HDR.num_gain_points = 0; % Number of gain points
|
||||||
HDR.range_gain_db = []; % Range gain in db
|
HDR.range_gain_db = []; % Range gain in db
|
||||||
HDR.variable = zeros(896, 1);
|
HDR.variable = zeros(896, 1);
|
||||||
|
|
||||||
% DZT file
|
% DZT file
|
||||||
@@ -378,7 +383,7 @@ elseif flg == 2
|
|||||||
fwrite(fid, HDR.tag, 'ushort');
|
fwrite(fid, HDR.tag, 'ushort');
|
||||||
fwrite(fid, HDR.data_offset, 'ushort');
|
fwrite(fid, HDR.data_offset, 'ushort');
|
||||||
fwrite(fid, HDR.num_samp, 'ushort');
|
fwrite(fid, HDR.num_samp, 'ushort');
|
||||||
fwrite(fid, HDR.bits_per_word, 'ushort');
|
fwrite(fid, HDR.data_format, 'ushort');
|
||||||
fwrite(fid, HDR.binary_offset, 'ushort');
|
fwrite(fid, HDR.binary_offset, 'ushort');
|
||||||
fwrite(fid, HDR.scans_per_second, 'float');
|
fwrite(fid, HDR.scans_per_second, 'float');
|
||||||
fwrite(fid, HDR.scans_per_meter, 'float');
|
fwrite(fid, HDR.scans_per_meter, 'float');
|
||||||
@@ -425,93 +430,94 @@ elseif flg == 2
|
|||||||
|
|
||||||
|
|
||||||
% HD / DT1, Sensors & Software Inc. =======================================
|
% HD / DT1, Sensors & Software Inc. =======================================
|
||||||
% Hd is the header file. In this file is all the important
|
% Hd is the header file. In this file all the important information such as
|
||||||
% information such as the number of traces, samples, stacks, etc.
|
% the number of samples, traces, stacks, etc. can be found.
|
||||||
% Dt1 is the data file written in binary form. This file contains as many
|
% Dt1 is the data file written in binary form. This file contains as many
|
||||||
% records as there are traces. Each record consists of a header section and
|
% records as there are traces. Each record consists of a header and a data
|
||||||
% a data section. That means that in this file there are also stored
|
% section. This means that also in this file there are stored information
|
||||||
% information such as the number of samples, traces, etc.
|
% such as the number of samples, traces, etc.
|
||||||
elseif flg == 3
|
|
||||||
|
elseif gpr_format == 3
|
||||||
%Header structure of HD
|
%Header structure of HD
|
||||||
HDR.fname = HDR.fname; % File name
|
HDR.fname = HDR.fname; % File name
|
||||||
HDR.file_tag = 1234; % File tag = 1234
|
HDR.file_tag = 1234; % File tag = 1234
|
||||||
HDR.system = ['Data Collected with ' HDR.antenna];
|
HDR.system = 'gprMax'; % The system the data collected with
|
||||||
|
|
||||||
date_time = clock;
|
date_time = clock;
|
||||||
HDR.date = ([num2str(date_time(3)), '/' ...
|
HDR.date = ([num2str(date_time(1)), '-' ...
|
||||||
num2str(date_time(2)), '/' ...
|
num2str(date_time(2)), '-' ...
|
||||||
num2str(date_time(1))]); % Date
|
num2str(date_time(3))]);% Date
|
||||||
|
|
||||||
HDR.num_trac = HDR.num_trac; % Number of traces
|
HDR.num_trac = HDR.num_trac; % Number of traces
|
||||||
HDR.num_samp = HDR.num_samp; % Number of samples
|
HDR.num_samp = HDR.num_samp; % Number of samples
|
||||||
HDR.time_zero_point = 0;
|
HDR.time_zero_point = 0; % Time zero point
|
||||||
HDR.time_window = HDR.time_window; % Total time window
|
HDR.time_window = HDR.time_window; % Total time window (ns)
|
||||||
HDR.start_position = 0;
|
HDR.start_position = 0; % Start position (m)
|
||||||
HDR.final_position = (HDR.num_trac - 1 ) * HDR.trac_int;
|
HDR.final_position = (HDR.num_trac - 1) * HDR.trac_int; % Stop position (m)
|
||||||
HDR.trac_int = HDR.trac_int; % Trace interval
|
HDR.trac_int = HDR.trac_int; % Trace interval (m)
|
||||||
HDR.pos_units = 'm'; % Position units
|
HDR.pos_units = 'm'; % Position units
|
||||||
HDR.nominal_freq = 'Unknown'; % Nominal frequency
|
HDR.nominal_freq = HDR.centre_freq; % Nominal freq. / Centre freq. (MHz)
|
||||||
HDR.ant_sep = HDR.ant_sep; % Antenna separation
|
HDR.ant_sep = HDR.ant_sep; % Antenna seperation / Tx-Rx distance (m)
|
||||||
HDR.pulser_voltage = 'Unknown'; % Pulser voltage (V)
|
HDR.pulser_voltage = 0; % Pulser voltage (V)
|
||||||
HDR.stacks = 0; % Number of stacks
|
HDR.stacks = 1; % Number of stacks
|
||||||
HDR.survey_mode = 'Reflection'; % Survey mode
|
HDR.survey_mode = 'Reflection'; % Survey mode
|
||||||
HDR.odometer = 0; % Odometer Cal (t/m)
|
HDR.odometer = 0; % Odometer Cal (t/m)
|
||||||
HDR.stacking_type = 'F1'; % Stacking type (Not using 'Unknown' in case it causes any problems)
|
HDR.stacking_type = 'F1'; % Stacking type
|
||||||
HDR.dvl_serial = '0000-0000-0000'; % DVL serial
|
HDR.dvl_serial = '0000-0000-0000'; % DVL serial
|
||||||
HDR.console_serial = '000000000000'; % Console serial
|
HDR.console_serial = '000000000000'; % Console serial
|
||||||
HDR.tx_serial = '0000-0000-0000'; % Transmitter serial
|
HDR.tx_serial = '0000-0000-0000'; % Transmitter serial
|
||||||
HDR.rx_serial = '0000-0000-0000'; % Receiver Serial
|
HDR.rx_serial = '0000-0000-0000'; % Receiver Serial
|
||||||
|
|
||||||
% Header structure of DT1
|
% Header structure of DT1
|
||||||
HDR.num_each_trac = 1 : 1 : HDR.num_trac; % Number of each trace 1, 2, 3, ... num_trac
|
HDR.num_each_trac = 1 : 1 : HDR.num_trac; % Number of each trace 1, 2, 3, ... num_trac
|
||||||
HDR.position = 0 : HDR.trac_int : ...
|
HDR.position = 0 : HDR.trac_int : ...
|
||||||
(HDR.num_trac - 1) * HDR.trac_int; % Position of each trace (Xaxis)
|
(HDR.num_trac - 1) * HDR.trac_int; % Position of each trace (m)
|
||||||
HDR.num_samp_each_trac = zeros(1, HDR.num_trac) + HDR.num_samp; % Number of samples of each trace
|
HDR.num_samp_each_trac = zeros(1, HDR.num_trac) + HDR.num_samp; % Number of samples of each trace
|
||||||
HDR.elevation = zeros(1, HDR.num_trac); % Elevation / topography of each trace;
|
HDR.elevation = zeros(1, HDR.num_trac); % Elevation / topography of each trace
|
||||||
HDR.not_used1 = zeros(1, HDR.num_trac); % Not used
|
HDR.not_used1 = zeros(1, HDR.num_trac); % Not used
|
||||||
HDR.bytes = zeros(1, HDR.num_trac) + 2; % Always 2 for Rev 3 firmware
|
HDR.bytes = zeros(1, HDR.num_trac) + 2; % Always 2 for Rev 3 firmware
|
||||||
HDR.time_window_each_trac = zeros(1, HDR.num_trac) + HDR.time_window; % Time window of each trace
|
HDR.time_window_each_trac = zeros(1, HDR.num_trac) + HDR.time_window; % Time window of each trace (ns)
|
||||||
HDR.stacks_each_trac = zeros(1, HDR.num_trac); % Number of stacks each trace
|
HDR.stacks_each_trac = ones(1, HDR.num_trac); % Number of stacks each trace
|
||||||
HDR.not_used2 = zeros(1, HDR.num_trac); % Not used
|
HDR.not_used2 = zeros(1, HDR.num_trac); % Not used
|
||||||
HDR.rsv_gps_x = zeros(1, HDR.num_trac); % Reserved for GPS X position (double*8 number)
|
HDR.rsv_gps_x = zeros(1, HDR.num_trac); % Reserved for GPS X position (double*8 number)
|
||||||
HDR.rsv_gps_y = zeros(1, HDR.num_trac); % Reserved for GPS Y position (double*8 number)
|
HDR.rsv_gps_y = zeros(1, HDR.num_trac); % Reserved for GPS Y position (double*8 number)
|
||||||
HDR.rsv_gps_z = zeros(1, HDR.num_trac); % Reserved for GPS Z position (double*8 number)
|
HDR.rsv_gps_z = zeros(1, HDR.num_trac); % Reserved for GPS Z position (double*8 number)
|
||||||
HDR.rsv_rx_x = zeros(1, HDR.num_trac); % Reserved for receiver x position
|
HDR.rsv_rx_x = zeros(1, HDR.num_trac); % Reserved for receiver x position
|
||||||
HDR.rsv_rx_y = zeros(1, HDR.num_trac); % Reserved for receiver y position
|
HDR.rsv_rx_y = zeros(1, HDR.num_trac); % Reserved for receiver y position
|
||||||
HDR.rsv_rx_z = zeros(1, HDR.num_trac); % Reserved for receiver z position
|
HDR.rsv_rx_z = zeros(1, HDR.num_trac); % Reserved for receiver z position
|
||||||
HDR.rsv_tx_x = zeros(1, HDR.num_trac); % Reserved for transmitter x position
|
HDR.rsv_tx_x = zeros(1, HDR.num_trac); % Reserved for transmitter x position
|
||||||
HDR.rsv_tx_y = zeros(1, HDR.num_trac); % Reserved for transmitter y position
|
HDR.rsv_tx_y = zeros(1, HDR.num_trac); % Reserved for transmitter y position
|
||||||
HDR.rsv_tx_z = zeros(1, HDR.num_trac); % Reserved for transmitter z position
|
HDR.rsv_tx_z = zeros(1, HDR.num_trac); % Reserved for transmitter z position
|
||||||
HDR.time_zero = zeros(1, HDR.num_trac); % Time zero adjustment where: point(x) = point(x + adjustment)
|
HDR.time_zero = zeros(1, HDR.num_trac); % Time zero adjustment where: point(x) = point(x + adjustment)
|
||||||
HDR.zero_flag = zeros(1, HDR.num_trac); % 0 = data ok, 1 = zero data
|
HDR.zero_flag = zeros(1, HDR.num_trac); % 0 = data ok, 1 = zero data
|
||||||
HDR.num_channels = zeros(1, HDR.num_trac); % Number of channels
|
HDR.num_channels = zeros(1, HDR.num_trac); % Number of channels
|
||||||
HDR.time = zeros(1, HDR.num_trac); % Time of day data collected in seconds past midnight
|
HDR.time = zeros(1, HDR.num_trac); % Time of day data collected in seconds past midnight
|
||||||
HDR.comment_flag = zeros(1, HDR.num_trac); % Comment flag
|
HDR.comment_flag = zeros(1, HDR.num_trac); % Comment flag
|
||||||
HDR.comment = zeros(1, 24); % Comment
|
HDR.comment = zeros(1, 24); % Comment
|
||||||
|
|
||||||
% HD file
|
% HD file
|
||||||
fid = fopen([HDR.fname '.hd'], 'w');
|
fid = fopen([HDR.fname '.hd'], 'w');
|
||||||
fprintf(fid, '%i\r\n\n', HDR.file_tag);
|
fprintf(fid, '%i\r\n', HDR.file_tag);
|
||||||
fprintf(fid, 'Data Collected with %s\r\n\n', HDR.system);
|
fprintf(fid, 'Data Collected with %s\r\n', HDR.system);
|
||||||
fprintf(fid, '%s\r\n\n', HDR.date);
|
fprintf(fid, '%s\r\n', HDR.date);
|
||||||
fprintf(fid, 'NUMBER OF TRACES = %i\r\n\n', HDR.num_trac);
|
fprintf(fid, 'NUMBER OF TRACES = %i\r\n', HDR.num_trac);
|
||||||
fprintf(fid, 'NUMBER OF PTS/TRC = %i\r\n\n', HDR.num_samp);
|
fprintf(fid, 'NUMBER OF PTS/TRC = %i\r\n', HDR.num_samp);
|
||||||
fprintf(fid, 'TIMEZERO AT POINT = %i\r\n\n', HDR.time_zero_point);
|
fprintf(fid, 'TIMEZERO AT POINT = %i\r\n', HDR.time_zero_point);
|
||||||
fprintf(fid, 'TOTAL TIME WINDOW = %0.6f\r\n\n', HDR.time_window);
|
fprintf(fid, 'TOTAL TIME WINDOW = %0.6f\r\n', HDR.time_window);
|
||||||
fprintf(fid, 'STARTING POSITION = %0.f\r\n\n', HDR.start_position);
|
fprintf(fid, 'STARTING POSITION = %0.6f\r\n', HDR.start_position);
|
||||||
fprintf(fid, 'FINAL POSITION = %0.6f\r\n\n', HDR.final_position);
|
fprintf(fid, 'FINAL POSITION = %0.6f\r\n', HDR.final_position);
|
||||||
fprintf(fid, 'STEP SIZE USED = %0.6f\r\n\n', HDR.trac_int);
|
fprintf(fid, 'STEP SIZE USED = %0.6f\r\n', HDR.trac_int);
|
||||||
fprintf(fid, 'POSITION UNITS = %s\r\n\n', HDR.pos_units);
|
fprintf(fid, 'POSITION UNITS = %s\r\n', HDR.pos_units);
|
||||||
fprintf(fid, 'NOMINAL FREQUENCY = %s\r\n\n', HDR.nominal_freq);
|
fprintf(fid, 'NOMINAL FREQUENCY = %0.6f\r\n', HDR.nominal_freq);
|
||||||
fprintf(fid, 'ANTENNA SEPARATION = %0.6f\r\n\n', HDR.ant_sep);
|
fprintf(fid, 'ANTENNA SEPARATION = %0.6f\r\n', HDR.ant_sep);
|
||||||
fprintf(fid, 'PULSER VOLTAGE (V) = %s\r\n\n', HDR.pulser_voltage);
|
fprintf(fid, 'PULSER VOLTAGE (V) = %0.6f\r\n', HDR.pulser_voltage);
|
||||||
fprintf(fid, 'NUMBER OF STACKS = %i\r\n\n', HDR.stacks);
|
fprintf(fid, 'NUMBER OF STACKS = %i\r\n', HDR.stacks);
|
||||||
fprintf(fid, 'SURVEY MODE = %s\r\n\n', HDR.survey_mode);
|
fprintf(fid, 'SURVEY MODE = %s\r\n', HDR.survey_mode);
|
||||||
fprintf(fid, 'ODOMETER CAL (t/m) = %0.6f\r\n\n', HDR.odometer);
|
fprintf(fid, 'ODOMETER CAL (t/m) = %0.6f\r\n', HDR.odometer);
|
||||||
fprintf(fid, 'STACKING TYPE = %s\r\n\n', HDR.stacking_type);
|
fprintf(fid, 'STACKING TYPE = %s\r\n', HDR.stacking_type);
|
||||||
fprintf(fid, 'DVL Serial# = %s\r\n\n', HDR.dvl_serial);
|
fprintf(fid, 'DVL Serial# = %s\r\n', HDR.dvl_serial);
|
||||||
fprintf(fid, 'Console Serial# = %s\r\n\n', HDR.console_serial);
|
fprintf(fid, 'Console Serial# = %s\r\n', HDR.console_serial);
|
||||||
fprintf(fid, 'Transmitter Serial#= %s\r\n\n', HDR.tx_serial);
|
fprintf(fid, 'Transmitter Serial#= %s\r\n', HDR.tx_serial);
|
||||||
fprintf(fid, 'Receiver Serial# = %s\r\n', HDR.rx_serial);
|
fprintf(fid, 'Receiver Serial# = %s\r\n', HDR.rx_serial);
|
||||||
fclose(fid);
|
fclose(fid);
|
||||||
|
|
||||||
@@ -543,14 +549,121 @@ elseif flg == 3
|
|||||||
fwrite(fid, HDR.comment_flag(i), 'float');
|
fwrite(fid, HDR.comment_flag(i), 'float');
|
||||||
fwrite(fid, HDR.comment, 'char');
|
fwrite(fid, HDR.comment, 'char');
|
||||||
|
|
||||||
fwrite(fid, data(:, i) , 'short');
|
fwrite(fid, data(:, i), 'short');
|
||||||
if mod(i, 10) == 0
|
if mod(i, 100) == 0
|
||||||
waitbar(i / HDR.num_trac, wb, sprintf('Exporting... %.f%%', i / HDR.num_trac * 100))
|
waitbar(i / HDR.num_trac, wb, sprintf('Exporting... %.f%%', ...
|
||||||
|
i / HDR.num_trac * 100))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
fclose(fid);
|
fclose(fid);
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
% IPRH / IPRB, Impulse Radar ==============================================
|
||||||
|
% IPRH is the header file. In this file is all the important information
|
||||||
|
% such as the number of samples, traces, measurement intervals can be
|
||||||
|
% found.
|
||||||
|
% IPRB is the data file. This file contains only the data (amplitude values)
|
||||||
|
% in a binary form.
|
||||||
|
elseif gpr_format == 4
|
||||||
|
% Header structure
|
||||||
|
HDR.fname = HDR.fname; % File name
|
||||||
|
HDR.hdr_version = 20; % Header version
|
||||||
|
HDR.data_format = 16; % Data format 16 or 32 bit
|
||||||
|
|
||||||
|
date_time = clock;
|
||||||
|
HDR.date = ([num2str(date_time(1)), '-' ...
|
||||||
|
num2str(date_time(2)), '-' ...
|
||||||
|
num2str(date_time(3))]);% Date
|
||||||
|
|
||||||
|
HDR.start_time = '00:00:00'; % Measurement start time
|
||||||
|
HDR.stop_time = '00:00:00'; % Measurement end time
|
||||||
|
HDR.antenna = [num2str(HDR.centre_freq) ' MHz']; % Antenna frequency (MHz)
|
||||||
|
HDR.ant_sep = HDR.ant_sep; % Antenna seperation / Tx-Rx distance (m)
|
||||||
|
HDR.num_samp = HDR.num_samp; % Number of samples
|
||||||
|
HDR.signal_pos = 0; % Signal position
|
||||||
|
HDR.clipped_samps = 0; % Clipped samples
|
||||||
|
HDR.runs = 0; % Number of runs
|
||||||
|
HDR.stacks = 1; % Maximum number of stacks
|
||||||
|
HDR.auto_stacks = 1; % Autostacks (1 = On)
|
||||||
|
HDR.samp_freq = HDR.samp_freq; % Sampling frequency (MHz)
|
||||||
|
HDR.time_window = HDR.time_window; % Total time window (ns)
|
||||||
|
HDR.num_trac = HDR.num_trac; % Number of traces
|
||||||
|
HDR.trig_source = 'wheel'; % Trig source (wheel or time)
|
||||||
|
HDR.trac_int_sec = 0; % Trace interval if trig source is time (sec)
|
||||||
|
HDR.trac_int_met = HDR.trac_int; % Trace interval if trig source is wheel (m)
|
||||||
|
HDR.user_trac_int = HDR.trac_int; % User defined trace interval if trig source is wheel (m)
|
||||||
|
HDR.stop_pos = HDR.num_trac * HDR.trac_int; % Stop position (meters or seconds) -> num_trac * trac_int
|
||||||
|
HDR.wheel_name = 'Cart'; % Wheel name
|
||||||
|
HDR.wheel_calibration = 0; % Wheel calibration
|
||||||
|
HDR.zero_lvl = 0; % Zero level
|
||||||
|
HDR.vel = 100; % The soil velocity (Selected in field m/usec). 100 is a random number
|
||||||
|
HDR.preprocessing = 'Unknown Preprocessing'; % Not in use
|
||||||
|
HDR.comment = '----'; % Not in use
|
||||||
|
HDR.antenna_FW = '----'; % Receiver firmware version
|
||||||
|
HDR.antenna_HW = '----'; % Not in use
|
||||||
|
HDR.antenna_FPGA = '----'; % Receiver FPGA version
|
||||||
|
HDR.antenna_serial = '----'; % Receiver serial number
|
||||||
|
HDR.software_version = '----'; % Software version
|
||||||
|
HDR.positioning = 0; % Positioning: (0 = no, 1 = TS, 2 = GPS)
|
||||||
|
HDR.num_channel = 1; % Number of channels
|
||||||
|
HDR.channel_config = 1; % This channel configuration
|
||||||
|
HDR.ch_x_offset = 0; % Channel position relative to ext.positioning
|
||||||
|
HDR.ch_y_offset = 0; % Channel position relative to ext.positioning
|
||||||
|
HDR.meas_direction = 1; % Meas. direction forward or backward
|
||||||
|
HDR.relative_direction = 0; % Direction to RL start(clockwise 360)
|
||||||
|
HDR.relative_distance = 0; % Distance from RL start to cross section
|
||||||
|
HDR.relative_start = 0; % DIstance from profile start to cross section
|
||||||
|
|
||||||
|
% IPRH file
|
||||||
|
fid = fopen([HDR.fname '.iprh'], 'w');
|
||||||
|
fprintf(fid, 'HEADER VERSION: %i\r\n', HDR.hdr_version);
|
||||||
|
fprintf(fid, 'DATA VERSION: %i\r\n', HDR.data_format);
|
||||||
|
fprintf(fid, 'DATE: %s\r\n', HDR.date);
|
||||||
|
fprintf(fid, 'START TIME: %s\r\n', HDR.start_time);
|
||||||
|
fprintf(fid, 'STOP TIME: %s\r\n', HDR.stop_time);
|
||||||
|
fprintf(fid, 'ANTENNA: %s\r\n', HDR.antenna);
|
||||||
|
fprintf(fid, 'ANTENNA SEPARATION: %0.6f\r\n', HDR.ant_sep);
|
||||||
|
fprintf(fid, 'SAMPLES: %i\r\n', HDR.num_samp);
|
||||||
|
fprintf(fid, 'SIGNAL POSITION: %0.6f\r\n', HDR.signal_pos);
|
||||||
|
fprintf(fid, 'CLIPPED SAMPLES: %i\r\n', HDR.clipped_samps);
|
||||||
|
fprintf(fid, 'RUNS: %i\r\n', HDR.runs);
|
||||||
|
fprintf(fid, 'MAX STACKS: %i\r\n', HDR.stacks);
|
||||||
|
fprintf(fid, 'AUTOSTACKS: %i\r\n', HDR.auto_stacks);
|
||||||
|
fprintf(fid, 'FREQUENCY: %0.6f\r\n', HDR.samp_freq);
|
||||||
|
fprintf(fid, 'TIMEWINDOW: %0.6f\r\n', HDR.time_window);
|
||||||
|
fprintf(fid, 'LAST TRACE: %i\r\n', HDR.num_trac);
|
||||||
|
fprintf(fid, 'TRIG SOURCE: %s\r\n', HDR.trig_source);
|
||||||
|
fprintf(fid, 'TIME INTERVAL: %0.6f\r\n', HDR.trac_int_sec);
|
||||||
|
fprintf(fid, 'DISTANCE INTERVAL: %0.6f\r\n', HDR.trac_int_met);
|
||||||
|
fprintf(fid, 'USER DISTANCE INTERVAL: %0.6f\r\n', HDR.user_trac_int);
|
||||||
|
fprintf(fid, 'STOP POSITION: %0.6f\r\n', HDR.stop_pos);
|
||||||
|
fprintf(fid, 'WHEEL NAME: %s\r\n', HDR.wheel_name);
|
||||||
|
fprintf(fid, 'WHEEL CALIBRATION: %0.6f\r\n', HDR.wheel_calibration);
|
||||||
|
fprintf(fid, 'ZERO LEVEL: %i\r\n', HDR.zero_lvl);
|
||||||
|
fprintf(fid, 'SOIL VELOCITY: %i\r\n', HDR.vel);
|
||||||
|
fprintf(fid, 'PREPROCESSING: %s\r\n', HDR.preprocessing);
|
||||||
|
fprintf(fid, 'OPERATOR COMMENT: %s\r\n', HDR.comment);
|
||||||
|
fprintf(fid, 'ANTENNA F/W: %s\r\n', HDR.antenna_FW);
|
||||||
|
fprintf(fid, 'ANTENNA H/W: %s\r\n', HDR.antenna_HW);
|
||||||
|
fprintf(fid, 'ANTENNA FPGA: %s\r\n', HDR.antenna_FPGA);
|
||||||
|
fprintf(fid, 'ANTENNA SERIAL: %s\r\n', HDR.antenna_serial);
|
||||||
|
fprintf(fid, 'SOFTWARE VERSION: %s\r\n', HDR.software_version);
|
||||||
|
fprintf(fid, 'POSITIONING: %i\r\n', HDR.positioning);
|
||||||
|
fprintf(fid, 'CHANNELS: %i\r\n', HDR.num_channel);
|
||||||
|
fprintf(fid, 'CHANNEL CONFIGURATION: %i\r\n', HDR.channel_config);
|
||||||
|
fprintf(fid, 'CH_X_OFFSET: %0.6f\r\n', HDR.ch_x_offset);
|
||||||
|
fprintf(fid, 'CH_Y_OFFSET: %0.6f\r\n', HDR.ch_y_offset);
|
||||||
|
fprintf(fid, 'MEASUREMENT DIRECTION: %i\r\n', HDR.meas_direction);
|
||||||
|
fprintf(fid, 'RELATIVE DIRECTION: %i\r\n', HDR.relative_direction);
|
||||||
|
fprintf(fid, 'RELATIVE DISTANCE: %0.6f\r\n', HDR.relative_distance);
|
||||||
|
fprintf(fid, 'RELATIVE START: %0.6f\r\n', HDR.relative_start);
|
||||||
|
fclose(fid);
|
||||||
|
|
||||||
|
% IPRB file
|
||||||
|
fid = fopen([HDR.fname '.iprb'], 'w');
|
||||||
|
fwrite(fid, data, 'short');
|
||||||
|
fclose(fid);
|
||||||
|
end
|
||||||
waitbar(1, wb, 'Done!!!');
|
waitbar(1, wb, 'Done!!!');
|
||||||
pause(1);
|
pause(1);
|
||||||
close(wb);
|
close(wb);
|
||||||
|
在新工单中引用
屏蔽一个用户