Generate acoustic signal with difference rise time and fall time
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
BoWen Han
am 11 Mär. 2022
Kommentiert: Scott MacKenzie
am 15 Mär. 2022
Hi
Can someone help me for this one? I would like to plot a signal that can be similair with acoustic emission signal with difference rise time and fall time. There is not specific parameters but I just want to know if there's a way to generate?
Thanks
2 Kommentare
Scott MacKenzie
am 11 Mär. 2022
Just to clarify, by "rise time and fall time", do you mean adding an envelope to an existing signal so the amplitude rises from 0 to max over some period time at the beginning of the signal and falls from max to 0 over some period of time at the end of the signal?
Akzeptierte Antwort
Scott MacKenzie
am 14 Mär. 2022
Bearbeitet: Scott MacKenzie
am 14 Mär. 2022
Here's a simple approach that provides separate control for the rise or attack time (n1), the sustain time (n2), and the decay or fall time (n3):
f = 440; % Hz (cycles per second)
duration = 2; % seconds
sRate = 8192; % default
sInterval = 1/sRate;
% vector for values of t at each sample point
t = 0:sInterval:duration;
n = length(t);
% build the waveform vector
y = sin(2*pi * f * t);
% build envelope (tweak as desired)
n1 = 100; % attack
n2 = 200; % sustain
n3 = 500; % decay
n4 = n - (n1 + n2 + n3); % off
attack = linspace(0,1,n1);
sustain = ones(1,n2);
decay = linspace(1,0,n3);
off = zeros(1,n4);
envelope = [attack sustain decay off];
% apply envelope to signal
y = y .* envelope;
% play it
soundsc(y, sRate); % NOTE: sRate not needed if 8192 (default)
% plot the first few cycles of the waveform
plot(y(1:1000));
set(gca, 'ylim', [-1.5 1.5]);
title('Envelope Demonstration');
xlabel('Time'); ylabel('Amplitude');
2 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Audio I/O and Waveform Generation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!