reduce values on a vector

1 view (last 30 days)
Miguel Albuquerque
Miguel Albuquerque on 5 Jul 2022
Edited: Jan on 6 Jul 2022
Hey guys,
I have this code. This two signal have a lot of values(millions) I want to use 1000 values(reference_signal_samples and Surveillance_signal_samples) with a step of 3000 samples. Im not able to do it with this code, I dont know where the error is.
Thank you
nRef = numel(Reference_signal)/Fs;
nSurv = numel(Surveillance_signal)/Fs;
pulse_size = 1000;
for k = 1:nRef
Reference_signal_samples =Reference_signal((k-1)*pulse_size+(1:pulse_size));
for kk =1:nSurv
Surveillance_signal_samples=Surveillance_signal((kk-1)*pulse_size+(1:pulse_size));
end
end

Accepted Answer

Jan
Jan on 5 Jul 2022
You are overwriting the variable Surveillance_signal_samples repeatedly:
for kk =1:nSurv
Surveillance_signal_samples=Surveillance_signal((kk-1)*pulse_size+(1:pulse_size));
end
You want to use 1000 values with a stepwidth of 3000?
Reference_signal_samples = Reference_signal(1:3000:3000*1000);
Surveillance_signal_samples = Surveillance_signal(1:3000:3000*1000);
No loops.
A hint: Use more compact names for variablkes to improve the readability.
  2 Comments
Jan
Jan on 6 Jul 2022
Edited: Jan on 6 Jul 2022
Maybe I've misunderstood your question.
disp(1:3000:3000)
1
1:3000:3000 is the scalar 1. If you really want to get parts of the array, these indices are strange: 1:1000, 4000:5000 : The 2nd has 1001 elements, the first only 1000. Maybe you mean:
for k = 1:4000:numel(Reference_signal)
signal = Reference_signal(k:k+999);
... here your calculations...
end

Sign in to comment.

More Answers (0)

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by