GitHub repository: Enhanced dual threshold detection method enabling fast and robust primary wave time range estimation
The ultrasonic pulse transmission method is a well-established non-destructive testing technique in industry and research. The analysis of the resulting signal data typically aims to determine the time range, as this allows for estimating the speed of sound, a crucial material property. One of the fundamental methods to estimate the time range is threshold detection. Unfortunately, the detection results are biased due to the shape of the signal and the chosen threshold value. In the existing literature, several approaches to reducing this bias are present. The a posteriori signal processing method presented in this paper is based on a threshold detection method with two thresholds and automatic error correction, as described in the literature. However, it also introduces several modifications to enhance the method's robustness with respect to frequency and noise. These mainly consist of threshold value optimisation and systematic error correction by taking into account the signal's shape in the detection zone. The analysis results, based on synthetic and natural signals, clearly demonstrate that the proposed method remarkably reduces the detection error (bias) while requiring moderate computational effort. Since this method does not involve filtering, noise is the governing factor limiting its application range. A comparison of different method variants with methods adapted from literature shows that the proposed method is fast, robust and outperforms the literature-based methods, especially in the regime of low frequencies and increasingly dominant noise.
Note
The preprint related to this repository is available under the DOI: 10.31224/5567
- Civil Engineering
- ultrasound
- signal analysis
- threshold detection
- primary wave
- signal processing
- pulse transmission
- ultrasonic
- time range
- time-of-flight
- onset point
- License
- Prerequisites
- Directory and file structure
- Installation instructions
- Usage instructions
- Help and Documentation
- Related data sources
- Related software
- Revision and release history
Copyright 2025 Jakob Harden (jakob.harden@tugraz.at, Graz University of Technology, Graz, Austria)
This file is part of the PhD thesis of Jakob Harden.
The following files are licensed under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (AGPLv3). See also licence information file "LICENSE".
- all *.m files in directory: /octave/aggregator
- all *.m files in directory: /octave/tools
- the file /octave/scicol_crameri/colormap_crameri.m
- all /octave/algo*.m files
- the file /octave/init.m
- the file /octave/man_intp.m
- the file /octave/man_pick.m
The following files are licensed under the MIT license. See also MIT licence.
- all *.m files in directory: /octave/struct
- all *.m files in directory: /octave/tex
- all *.mat, *.png, *.pdf files in directory: /octave/scicol_crameri
The following files are licensed under the Creative Commons Attribution 4.0 International license. See also CC BY 4.0.
- all files in directory: results (including all sub-directories)
- the files README.md and README.html (all directories and sub-directories)
As a prerequisite, GNU Octave 6.2.0 (or a more recent version) need to be installed. GNU Octave is available via the package management system on many Linux distributions. For Microsoft Windows or MacOS users it is suggested to download the Windows or MacOS version of GNU Octave and to install the software manually. See also: GNU Octave download
To compile the MP4 video files (algo_mp41.m, algo_mp42.m), the command line tool ffmpeg is required. In many Linux distributions, this tool can be installed using the package management system. For Microsoft Windows or MacOS users it is suggested to download the Windows or MacOS version of ffmpeg and to install the software manually. See also: ffmpeg download
All GNU Octave script files (*.m) are written in the scientific programming language of GNU Octave 6.2.0. All Latex files (*.tex) are written with compliance to TeX-live version 2020.20210202-3. Text files (*.m, *.tex) are generally encoded in UTF-8.
paper2-analysis-1.0.0
├── octave
│ ├── aggregator
│ │ └── *.m
│ ├── results
│ │ ├── algo_freqz
│ │ ├── algo_mp41
│ │ ├── algo_mp42
│ │ ├── algo_mp43
│ │ ├── algo_param
│ │ ├── algo_part_1
│ │ ├── algo_part_2
│ │ ├── algo_part_3
│ │ ├── algo_part_4
│ │ ├── algo_pdev
│ │ ├── algo_sigfit
│ │ ├── algo_stats
│ │ └── noise_Nsmp8000_Nmc1000.oct
│ ├── scicol_crameri
│ │ ├── *.mat
│ │ ├── *.png
│ │ ├── *.pdf
│ │ ├── README.md
│ │ └── colormap_crameri.m
│ ├── struct
│ │ ├── README.md
│ │ ├── README.html
│ │ └── *.m
│ ├── tex
│ │ ├── README.md
│ │ ├── README.html
│ │ └── *.m
│ ├── tools
│ │ ├── tool_chi2_distrtest.m
│ │ ├── tool_comp_perf.m
│ │ ├── tool_cyrat_sigmod.m
│ │ ├── tool_det_initmax.m
│ │ ├── tool_det_localmax.m
│ │ ├── tool_det_thfwd.m
│ │ ├── tool_det_threv.m
│ │ ├── tool_dhc.m
│ │ ├── tool_dh.m
│ │ ├── tool_dswc.m
│ │ ├── tool_dsw.m
│ │ ├── tool_dtlac.m
│ │ ├── tool_dtla.m
│ │ ├── tool_dtlrc.m
│ │ ├── tool_dtlr.m
│ │ ├── tool_errorstats.m
│ │ ├── tool_est_dft.m
│ │ ├── tool_est_fqband.m
│ │ ├── tool_est_snr.m
│ │ ├── tool_export.m
│ │ ├── tool_fit_sigmod.m
│ │ ├── tool_flt_fir.m
│ │ ├── tool_gen_noise.m
│ │ ├── tool_gen_signal.m
│ │ ├── tool_gen_testsignal.m
│ │ ├── tool_linapp.m
│ │ ├── tool_linreg.m
│ │ ├── tool_load_natsig.m
│ │ ├── tool_max_polyreg.m
│ │ ├── tool_merge_tex.m
│ │ ├── tool_montecarlo_test.m
│ │ ├── tool_plot_axes_annotate.m
│ │ ├── tool_plot_barminmax.m
│ │ ├── tool_plot_create_figure.m
│ │ ├── tool_plot_errorbar_extended.m
│ │ ├── tool_plot_quantileranges.m
│ │ ├── tool_plot_sigmod.m
│ │ └── tool_scale_noise2snr.m
│ ├── algo_dsdefs.m
│ ├── algo_freqz.m
│ ├── algo_mp41.m
│ ├── algo_mp42.m
│ ├── algo_param.m
│ ├── algo_part_1.m
│ ├── algo_part_2.m
│ ├── algo_part_3.m
│ ├── algo_part_4.m
│ ├── algo_pdev.m
│ ├── algo_sigfit.m
│ ├── algo_sigfit_mp4.m
│ ├── algo_stats.m
│ └── init.m
├── LICENSE
├── README.html
└── README.md
- paper2-analysis-1.0.0 ... main program directory
- LICENSE ... text file, GNU Affero General Public License
- README.md ... text file, information about the program, this file
- README.html ... text file, HTML version of README.md
- paper2-analysis-1.0.0/octave ... directory, GNU Octave source code
- algo_dsdefs.m ... function file, data set definitions
- algo_freqz.m ... function file, compile FIR filter window and frequency transfer function
- algo_mp41.m ... function file, compile MP4 video files, automated P-wave onset point estimates
- algo_mp42.m ... function file, compile MP4 video files, automated P-wave SNR and frequency band estimates
- algo_param.m ... function file, analysis parameter definitions
- algo_part_1.m ... function file, compile signal model fitting results
- algo_part_2.m ... function file, compile detection parameter optimisation results
- algo_part_3.m ... function file, compile sensitivity analysis, Monte Carlo simulations
- algo_part_4.m ... function file, compile onset point detection results concerning natural signals
- algo_stats.m ... function file, compile SNR, frequency and error statistics concerning natural signals
- algo_pdev.m ... function file, parameter variation to estimate the impact of deviations in the signal model parameters
- algo_sigfit.m ... function file, visual signal inspection and semi-automated signal model fitting
- algo_sigfit_mp4.m ... function file, compile MP4 video files showing the semi-automated signal model fitting results
- algo_stats.m ... function file, compile detection error statistics concerning natural signals
- init.m ... function file, initialise program
- paper2-analysis-1.0.0/octave/aggregator ... directory, data aggregation tools
- *.m ... function files
- paper2-analysis-1.0.0/octave/manual ... directory, manual onset point picking results
- *.csv ... primary wave onset point picking results, comma separated values
- paper2-analysis-1.0.0/octave/results ... directory, analysis results, main output directory
- noise_Nsmp8000_Nmc1000.oct ... standard noise data, GNU Octave binary file (allows to reproduce the analysis results)
- paper2-analysis-1.0.0/octave/results/algo_freqz ... directory, FIR filter window and frequency transfer function
- paper2-analysis-1.0.0/octave/results/algo_mp41 ... directory, automated P-wave onset point estimates, MP4 video files
- paper2-analysis-1.0.0/octave/results/algo_mp42 ... directory, automated P-wave SNR and frequency band estimates, MP4 video files
- paper2-analysis-1.0.0/octave/results/algo_mp43 ... directory, semi-automated signal model fitting, MP4 video files
- paper2-analysis-1.0.0/octave/results/algo_param ... directory, analysis parameters, exported TeX files
- paper2-analysis-1.0.0/octave/results/algo_part_1 ... directory, signal model fitting results (figures, TeX files, binary output files)
- paper2-analysis-1.0.0/octave/results/algo_part_2 ... directory, detection parameter optimisation results (figures, TeX files, binary output files)
- paper2-analysis-1.0.0/octave/results/algo_part_3 ... directory, sensitivity analysis, Monte Carlo simulations (figures, TeX files, binary output files)
- paper2-analysis-1.0.0/octave/results/algo_part_4 ... directory, onset point detection results concerning natural signals (figures, TeX files, binary output files)
- paper2-analysis-1.0.0/octave/results/algo_pdev ... directory, statistics to the impact of deviations in the signal model parameters (figures, TeX files, binary output files)
- paper2-analysis-1.0.0/octave/results/algo_sigfit ... directory, signal model fitting results (figures, TeX files, binary output files)
- paper2-analysis-1.0.0/octave/results/algo_stats ... directory, SNR, frequency and error statistics concerning natural signals (figures, TeX files, binary output files)
- paper2-analysis-1.0.0/octave/scicol_crameri ... directory, scientific colour maps by Fabio Crameri et al.
- *.mat ... colour map definitions (Matlab binary files)
- *.png ... colour maps, graphical representations (Portable Network Graphic format)
- *.pdf ... colour map documentation (Portable Document File format)
- README.md ... information about the directory content
- colormap_crameri.m ... colour map loader (GNU Octave function file)
- paper2-analysis-1.0.0/octave/struct ... directory, data structure building tools
- struct_objattrib.m ... function file, create attribute object, atomic attribute element, AAE
- struct_objdata.m ... function file, create data object, atomic data element, ADE
- struct_objref.m ... function file, create reference object, atomic reference element, ARE
- README.md ... text file, additional information about the directory content
- README.html ... text file, HTML version of /octave/tex/README.md
- paper2-analysis-1.0.0/octave/tex ... directory, data structure TeX file export tools
- oct2texdefs.tex ... TeX file, Latex commands to use the data exported from GNU Octave data structures
- tex_def_csvarray.m ... function file, serialise array variable to TeX code, comma-separated list, e.g. version numbers
- tex_def_dotarray.m ... function file, serialise short array variable to TeX code, dot-separated list, e.g. structure path
- tex_def_scalar.m ... function file, serialise scalar value to TeX-code
- tex_def_tabarray.m ... function file, serialise array value to TeX-code, tabulated
- tex_def_tabmatrix.m ... function file, serialise matrix value to TeX code, tabulated
- tex_serialize.m ... function file, serialise single value of various data types
- tex_settings.m ... function file, create data structure containing the TeX-code serialisation settings
- tex_struct_export.m ... function file, export data structure(s) to TeX-code files
- tex_struct.m ... function file, serialise data structure(s) to TeX-code
- tex_struct_objattrib.m ... function file, serialize atomic attribute element to TeX-code
- tex_struct_objdata.m ... function file, serialise atomic data element to TeX-code
- tex_struct_objref.m ... function file, serialise atomic reference element to TeX-code
- README.md ... text file, additional information about the directory content
- README.html ... text file, HTML version of /octave/tex/README.md
- paper2-analysis-1.0.0/octave/tools ... directory, data structure TeX file export tools
- tool_chi2_distrtest.m ... function file, chi-squared distribution homogeneity test
- tool_comp_perf.m ... function file, composite performance assessment
- tool_cyrat_sigmod.m ... function file, estimate the cycle ratio of the signal model's maximum point
- tool_det_initmax.m ... function file, initial maximum point detection
- tool_det_localmax.m ... function file, local maximum point detection
- tool_det_thfwd.m ... function file, forward threshold detection
- tool_det_threv.m ... function file, reverse threshold detection
- tool_dhc.m ... function file, dual threshold detection using the signal's Hilbert envelope with automated error correction
- tool_dh.m ... function file, dual threshold detection using the signal's Hilbert envelope
- tool_dswc.m ... function file, double threshold detection using a sliding window with automated error correction
- tool_dsw.m ... function file, double threshold detection using a sliding window
- tool_dtlac.m ... function file, dual threshold detection, estimate secant through 2-point approximation, automated error correction
- tool_dtla.m ... function file, dual threshold detection, estimate secant through 2-point approximation
- tool_dtlrc.m ... function file, dual threshold detection, estimate secant through linear regression, automated error correction
- tool_dtlr.m ... function file, dual threshold detection, estimate secant through linear regression
- tool_errorstats.m ... function file, compile error statistics for a value array
- tool_est_dft.m ... function file, estimate DFT - discrete Fourier transformation
- tool_est_fqband.m ... function file, estimate the frequency band of a signal
- tool_est_snr.m ... function file, estimate the signal-to-noise ratio of a signal
- tool_export.m ... function file, export data structures and figures to binary files and TeX files
- tool_fit_sigmod.m ... function file, fit signal model to a natural signal
- tool_flt_fir.m ... function file, finite impulse response zero-phase filtering
- tool_gen_noise.m ... function file, generate standard noise data needed to reproduce the analysis results
- tool_gen_signal.m ... function file, generate damped sinusoidal signals
- tool_gen_testsignal.m ... function file, generate damped sinusoidal test signals, pre-padding with zeros
- tool_linapp.m ... function file, compute linear function coefficients using the 2-point form of a line
- tool_linreg.m ... function file, compute linear function coefficients using a linear regression
- tool_max_polyreg.m ... function file, estimate signal maximum point by smoothing the signal with a polynomial regression
- tool_merge_tex.m ... function file, merge TeX files to one single file
- tool_montecarlo_test.m ... function file, compile Monte Carlo simulation to estimate the impact of noise
- tool_plot_axes_annotate.m ... function file, add axes annotation to figures
- tool_plot_barminmax.m ... function file, plot min/max bars
- tool_plot_create_figure.m ... function file, create figures
- tool_plot_errorbar_extended.m ... function file, extended error bar plots
- tool_plot_quantileranges.m ... function file, plot filled areas to display quantile ranges
- tool_plot_sigmod.m ... function file, plot signal model
- tool_scale_noise2snr.m ... function file, scale noise amplitudes w.r.t. the requested SNR
- Download the data set records (see section Related data sources) from the repository and move them to a directory of your choice. e.g. /home/acme/science/data/*_dataset.tar.xz
- Extract data sets from the TAR archives using GNU tar. For Microsoft Windows users it is suggested to use 7-zip instead.
bash: $ tar -xzf ts1_datasets.tar.xz
The expected outcome is to have all data sets (*.oct files) in the directories of the respective test series.
home
└── acme
└── science
└── data
├── ts1_dataset
│ └── *.oct
├── ts5_dataset
│ └── *.oct
├── ts6_dataset
│ └── *.oct
└── ts7_dataset
└── *.oct
Note
7-zip is available online. 7-zip download
- Download the record containing the analysis code from the repository and move it to a directory of your choice. e.g. /home/acme/science
- Decompress analysis code from the ZIP archive paper2-analysis-1.0.0.zip. e.g. /home/acme/science/paper2-analysis-1.0.0
- Run GNU Octave.
- Make the program directory /home/acme/science/paper2-analysis-1.0.0/octave the working directory.
- Adjust the variables 'r_ds.datapath' 'r_ds.dspath1', 'r_ds.dspath2', 'r_ds.dspath3' and 'r_ds.dspath4' in function file /home/acme/science/paper2-analysis-1.0.0/octave/algo_param.m. They have to point to the actual location of the folders containing the previously extracted data sets (*.oct) of the respective test series.
algo_param.m: ...
algo_param.m: r_ds.datapath = fullfile(filesep(), 'home', 'acme', 'science', 'data'); # data set source path
algo_param.m: r_ds.dspath1 = 'ts1_dataset'; # test series 1 data set directory
algo_param.m: r_ds.dspath2 = 'ts5_dataset'; # test series 5 data set directory
algo_param.m: r_ds.dspath3 = 'ts6_dataset'; # test series 6 data set directory
algo_param.m: r_ds.dspath4 = 'ts7_dataset'; # test series 7 data set directory
algo_param.m: ...
- Open GNU Octave.
- Initialise program.
- Run analysis.
The init function initialises the program. The initialisation must be run once before executing all the other functions. The command is adding the sub-directories included in the main program directory to the 'path' environment variable. This function also loads additional packages (e.g. the signal package).
octave: >> init();
The algo_.m* function files compile the analysis results and write them to the above-mentioned results directory. These functions are also plotting the analysis results. Since some of the algorithms depend on previously compiled analysis results, the order of executing the function files matters.
- Fit signl model to natural signals and compile signal model parameter statistics (output: /octave/results/algo_sigfit)
octave: >> algo_sigfit('fit');
octave: >> algo_sigfit('plot');
octave: >> algo_sigfit('stats');
- Compile statistics concerning the impact of deviations in the signal model parameters (output: /octave/results/algo_pdev)
octave: >> algo_pdev();
- Compile graphs for selected signal model fitting results (output: /octave/results/algo_part_1)
octave: >> algo_part_1();
- Compile detection parameter optimisation results (output: /octave/results/algo_part_2)
octave: >> algo_part_2();
- Compile sensitivity analysis, Monte Carlo simulations (output: /octave/results/algo_part_3)
octave: >> algo_part_3();
- Compile onset point detection results concerning natural signals (output: /octave/results/algo_part_4)
octave: >> algo_part_4();
- Compile SNR, frequency and error statistics concerning natural signals (output: /octave/results/algo_stats)
octave: >> algo_stats();
- Compile MP4 video files, onset point detection results concerning natural signals (optional, output: /octave/results/algo_mp41)
octave: >> algo_mp41();
- Compile MP4 video files, power measuring windows concerning natural signals (optional, output: /octave/results/algo_mp42)
octave: >> algo_mp42();
- Compile MP4 video files, signal model fitting results (optional, output: /octave/results/algo_mp43)
octave: >> algo_sigfit_mp4();
The function file algo_part_3.m is running the Monte Carlo simulations. These simulations are also used to determine the complexity of the detection methods by measuring the computation time. Therefore, it is necessary to isolate some CPU cores to ensure that systems background processes are not disturbing the computation time measurements (what actually happens). The following commands allow to create an isolated set of CPU cores using the bash command line interface on Debian Linux 11.0 and the cpuset software package. This is an example for a system with a 8-core CPU.
- Install to software package "cpuset" (if necessary)
bash: $ sudo apt-get install cpuset
- Run GNU Octave
- Get PID of GNU Octave instance ---> (the "octave" instance, not the "octave-gui" instance)
bash: $ ps -a --user <your_user_name> | grep octave
- Create shielded CPU core set (user set), cores 6 and 7 of a 8-core CPU (0-7)
bash: $ sudo cset shield -c 6,7 --kthread on
- Attach PID-octave to CPU core set
bash: $ sudo cset shield --shield -p <PID-octave>
- Execute function file in GNU Octave
octave: >> algo_part_3();
- restore standard CPU settings after execution
bash: $ sudo cset shield --reset
The results of the above-described analysis procedure are available at the repository of Graz University of Technology. These can be installed by replacing the folder /octave/results with the pre-compiled analysis results from the repository.
All function files contain an adequate function description and instructions on how to use the functions. The documentation can be displayed in the GNU Octave command line interface by entering the following command:
octave: >> help function_file_name;
The data sets analysed in this publication are available at the repository of Graz University of Technology under the Creative Commons Attribution 4.0 International license. The data records enlisted below contain the raw data, the compiled data sets and a technical description of the record content. Additionally, a data descriptor (preprint) is available, which contains an elaborate descriptions of these data sets.
- Harden, J. (2023) "Ultrasonic Pulse Transmission Tests: Datasets - Test Series 1, Cement Paste at Early Stages". Graz University of Technology. doi: 10.3217/bhs4g-m3z76
- Harden, J. (2025) "Ultrasonic Pulse Transmission Tests: Datasets in HDF5 format - Test Series 1, Cement Paste at Early Stages". Graz University of Technology. doi: 10.3217/hbp7y-dt377
- Harden, J. (2025) "Ultrasonic Pulse Transmission Tests: Datasets in MATLABv6 format - Test Series 1, Cement Paste at Early Stages". Graz University of Technology. doi: 10.3217/qjwv4-z0f17
- Harden, J. (2023) "Ultrasonic Pulse Transmission Tests: Datasets - Test Series 5, Reference Tests on Air". Graz University of Technology. doi: 10.3217/bjkrj-pg829
- Harden, J. (2023) "Ultrasonic Pulse Transmission Tests: Datasets in HDF5 format - Test Series 5, Reference Tests on Air". Graz University of Technology. doi: 10.3217/d9dyc-erz07
- Harden, J. (2023) "Ultrasonic Pulse Transmission Tests: Datasets in MATLABv6 format - Test Series 5, Reference Tests on Air". Graz University of Technology. doi: 10.3217/zrnvg-bfb68
- Harden, J. (2023) "Ultrasonic Pulse Transmission Tests: Datasets - Test Series 6, Reference Tests on Water". Graz University of Technology. doi: 10.3217/hn7we-q7z09
- Harden, J. (2023) "Ultrasonic Pulse Transmission Tests: Datasets in HDF5 format - Test Series 6, Reference Tests on Water". Graz University of Technology. doi: 10.3217/0mh58-9v235
- Harden, J. (2023) "Ultrasonic Pulse Transmission Tests: Datasets in MATLABv6 format - Test Series 6, Reference Tests on Water". Graz University of Technology. doi: 10.3217/dnhc2-xvz80
- Harden, J. (2025) "Ultrasonic Pulse Transmission Tests: Datasets - Test Series 7, Reference Tests on Aluminium Cylinder (1.1)". Graz University of Technology. doi: 10.3217/w3mb5-1wx17
- Harden, J. (2025) "Ultrasonic Pulse Transmission Tests: Datasets in HDF5 format - Test Series 7, Reference Tests on Aluminium Cylinder (1.1)". Graz University of Technology. doi: 10.3217/bee4c-t2763
- Harden, J. (2025) "Ultrasonic Pulse Transmission Tests: Datasets in MATLABv6 format - Test Series 7, Reference Tests on Aluminium Cylinder (1.1)". Graz University of Technology. doi: 10.3217/whgxt-j3605
- Harden, J. (2025). Experimental study on cement paste using the ultrasonic pulse transmission method (1.0.0). Graz University of Technology. doi: 10.31224/4465, alternative doi: 10.20944/preprints202503.2008.v1
- Harden, J. (2025). Source code for: Experimental study on cement paste using the ultrasonic pulse transmission method (1.0.0-beta1). Graz University of Technology. doi: 10.3217/xmrmb-5ap42
Note
The source code to the data descriptor is also available on GitHub. Source code
The referenced data sets are compiled from raw data using a data set compilation tool implemented in the programming language of GNU Octave 6.2.0. To understand the structure of the data sets, it is a good idea to look at the source code of that tool. Therefore, it was made publicly available under the MIT license at the repository of Graz University of Technology.
- Harden, J. (2025) "Ultrasonic Pulse Transmission Tests: Data set compiler (1.2)". Graz University of Technology. doi: 10.3217/bcydt-6ta35
Note
Dataset Compiler is also available on GitHub. Dataset Compiler
Dataset Exporter is implemented in the programming language of GNU Octave 6.2.0 and allows for exporting data contained in the data set. The main features of that script collection cover the export of substructures to variables and the serialisation to the CSV format, the JSON structure format and TeX code. It is also made publicly available under the MIT licence at the repository of Graz University of Technology.
- Harden, J. (2025) "Ultrasonic Pulse Transmission Tests: Dataset Exporter (1.1)". Graz University of Technology. doi: 10.3217/d3p6m-w7d64
Note
Dataset Exporter is also available on GitHub. Dataset Exporter
Dataset Viewer is implemented in the programming language of GNU Octave 6.2.0 and allows for plotting measurement data contained in the data set. The main features of that script collection cover 2D plots, 3D plots and rendering MP4 video files from the measurement data contained in the data set. It is also made publicly available under the MIT licence at the repository of Graz University of Technology.
- Harden, J. (2023) "Ultrasonic Pulse Transmission Tests: Dataset Viewer (1.0)". Graz University of Technology. doi: 10.3217/c1ccn-8m982
Note
Dataset Viewer is also available on GitHub. Dataset Viewer
- published/released pre-release version 1.0.0-beta1, by Jakob Harden
- repository: TU Graz Repository
- doi: 10.3217/tthv9-6yx74
- GitHub: Repository
- published/released analysis results to the pre-release version 1.0.0-beta1, by Jakob Harden
- repository: TU Graz Repository
- doi: 10.3217/5shdb-rhz09