Avoiding load and/or for loop - speed up
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi everyone!
I have a directory containing mat-files. they all contain vectors A and B.
I would like to find the maximum value A.*B out of all the mat files. However loading all the .mat files and checking if the maximum value from all the last files is crossed is very timeconsuming:
for i = first:last
load(filename{i})
U = lowpass(A,wpass)*U_scale; % [V] Lowpass-filtered & scaled voltage data
I = lowpass(B,wpass)*I_scale; % [A] Lowpass-filtered & scaled current data
E = abs(U.*I)*t_S;
E_quant = quantile(E,0.9);
if E_max < max(E_quant)
E_max = max(E_quant);
end
end
How do I do this efficiently?
Thanks a lot!
Ann
8 comentarios
Mathieu NOE
el 20 de Oct. de 2020
maybe you could decimate the data inside the loop before doing the low pass filtering
depends what is the original sampling rate and what bandwith must be kept for U and I ( for your computation E = abs(U.*I)*t_S;)
as decimation applies also low pass filtering , you have your lowpass effect plus you reduce the size of U and I.
=> help decimate
Respuestas (0)
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!