# Loop function takes too long. How can I reduce the processing time?

4 Ansichten (letzte 30 Tage)
Ibrahim Suleiman am 19 Mai 2021
Hi,
I have got a signal obtained from experimental data. It is a force-time series graph that I am looking at here. I want to find the derivative of every single point on the signal. This is to identify the ramps of the signal peaks and then to find the rate of force development. I also want to plot the differentials as tangents on signal to visualise it.
I have constructed a loop to find the derivatives.
Here is the loop.
% Find the derivative of all points on the signal
for idx = 2:length(s)
diff = s(idx) - s(idx-1);
figure;
plot(x,s)
hold on
plot(diff)
hold off
end
It takes more than half an hour. I dont know how long it exactly takes because stop the processing at every attempt to run it.
The variable s is a collumn vector with size 79693, so I do understand that this could be the reason why it is so slow. Is there any way to increase the speed of running this part of code?
I have attached my file.
##### 1 Kommentar-1 ältere Kommentare anzeigen-1 ältere Kommentare ausblenden
Jan am 19 Mai 2021
Currently you open 79000 figures. How could this be useful? It would take days to check them with your eyes. Opening 40 figures at the same time might be an upper limit of what is useful.

Melden Sie sich an, um zu kommentieren.

### Antworten (1)

Stephan am 19 Mai 2021
Bearbeitet: Stephan am 19 Mai 2021
Yes, diff in as inbuilt and vectrorized function to get what you want. Run this command on a vector input will give you all the results in a very short time. Then plot all the results you get at once. The loop is not needed:
ds = diff(s)
plot(x,ds)
##### 1 Kommentar-1 ältere Kommentare anzeigen-1 ältere Kommentare ausblenden
Ibrahim Suleiman am 23 Mai 2021
Thank you for your answer. I now have the derivatives of the entire signal. But I need to know the rate at which the signal moves from the baseline to the peaks. Any idea how I can achieve that?
I was hoping I could index the range of x values where the signal goes from the baseline to the peaks and calculate/select those derivatives only but that does not seem possible with diff.

Melden Sie sich an, um zu kommentieren.

### Kategorien

Mehr zu Correlation and Convolution 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!

Translated by