How do I generate simulated ultrasound data with and without noise?

14 vues (au cours des 30 derniers jours)
AB
AB le 2 Nov 2016
I am trying to create synthetic ultrasound data and can't seem to do it in a way that represents real ultrasound data that I have. I have found scripts for Gaussian pulses and sinusoidal waves. However, this does not resemble the type of data that I am trying to artificially create. Attached is a example of the kind of wave I am trying to re-create in Matlab.

Réponses (1)

Dennis Kachila
Dennis Kachila le 9 Nov 2024
To create synthetic ultrasound data similar to your example, I considered combining several elements to achieve the characteristic waveform:
  1. Broadband Noise and Random Fluctuations
Real ultrasound data often have noise due to scattering. You can add random noise (e.g., white Gaussian noise) to introduce variability.
  1. Exponential Decay
Attenuation in ultrasound signals can be represented by an exponential decay factor, which gradually reduces the amplitude over time.
  1. Amplitude Modulation
Modulate a high-frequency sinusoidal wave with a low-frequency envelope to create periodic bursts that resemble the real signal's variation in amplitude.
  1. Pulse Echoes and Reflections
Add synthetic reflections by introducing delayed, attenuated copies of the main signal to represent multiple path echoes.
Though not as close as what you wanted, the aspectadding noise tries not make it realistic.
Fs = 10e6; % Sampling frequency
t = 0:1/Fs:0.001; % Time vector
% Main carrier wave (high-frequency sine wave)
f_carrier = 2e6; % Carrier frequency
carrier_wave = sin(2 * pi * f_carrier * t);
% Amplitude modulation (envelope)
f_env = 1000; % Low-frequency envelope frequency
envelope = exp(-t*10000) .* sin(2 * pi * f_env * t);
% Add noise
noise = 0.02 * randn(size(t));
% Combined signal
signal = envelope .* carrier_wave + noise;
% Simulate reflections
delay = round(0.0005 * Fs); % Delay in samples
reflection = [zeros(1, delay), 0.5 * envelope(1:end-delay) .* carrier_wave(1:end-delay)];
signal = signal + reflection;
% Plot
plot(t, signal);
xlabel('Time (s)');
ylabel('Amplitude');
title('Synthetic Ultrasound Signal');

Catégories

En savoir plus sur Propagation and Channel Models dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by