repeating step signal in real time with a hold value of 5 seconds
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello dear community,
I am working on my Bachelor thesis and have encountered a problem which I could not solve with different methods.
I am building a Robot with a LEGO EV3 Brick and Motor. For modeling purposes I need to gain experimental data to build a function that translates my input u (torque) into power as the Simulink encoder for LEGO works with power values from -100 to 100.
To do so I build an experiment with a digital clock that counts from -100 to 100 and I gave this signal into the motor. I saved the data from the encoder and used polyfit to approximate the data. This worked, but there is a big margin of error.
So I want to build a repeating step signal, that holds the power level for 5 seconds and then makes a step of 1 to the next power level. This way I could calculate the average value over 5 seconds. But I have not been successful in generating a signal like this.
I would appreciate any kind of help.
The signal would look something like this:
_ _ _ _ _| step of 1
_ _ _ _ _|
_ _ _ _ _|
5 seconds
Kind regards,
Ramón
0 commentaires
Réponses (2)
Mathieu NOE
le 7 Juil 2021
hello
my 2 cents suggestion... adapt sampling frequency to your own needs
Fs = 100;
dt = 1/Fs;
duration = 5 ;
nb_steps = 10
%%%%%%%%%%%%%%%
samples = Fs*duration;
y = ones(samples,1);
out = y;
for ci = 2:nb_steps
out = [out; ci*y];
end
plot(out) % time axis in samples
0 commentaires
Peter Perkins
le 28 Juil 2021
Like this?
>> interp1([1 5 6 10 11 15],[1 1 2 2 3 3],1:15,"prev")
ans =
1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
I mean, a signal all by itself seems unusual, so likely if there was a bigger picture I'd recommend using a timetable and retime to do that "prev" interpolation.
0 commentaires
Voir également
Catégories
En savoir plus sur LEGO MINDSTORMS EV3 Hardware 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!