Write calculated values to an excel file in column 2 and the file name in column 1
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Giggs B.
el 18 de Abr. de 2022
Comentada: Giggs B.
el 18 de Abr. de 2022
Hi,
I have the below code. I have ~4000 csv files in a folder.
What I require: I am doing filtering on all these files (one at a time) and calculating a parameter (for each file). Hence each file will have a value. I want to store the file name for which it was calculated in one column and the calculated value in other.
Also, to do this faster, I want to store the values in an array and then write all the values together in the csv file to save time or using xlswrite operation for each file will take a lot of time.
I already have some part of code but how can I do the rest? Thanks.
(I have attached a screenshot of my files)
clearvars
fs=40000;
[z,p,k] = ellip(4,1,40,2400/(fs/2),'high'); %z,p,k method
[sos,g] = zp2sos(z,p,k);
a=0;
indir = '.'; %current directory
%outdir = 'C:\Users\AmplitudeValues.csv';
files = dir( fullfile(indir, '*.csv'));
for file = files'
inname = fullfile(file.folder, file.name);
n = xlsread(inname);
m = rescale(n, -1, 1, 'InputMin',2301,'InputMax',3642)+0.43;
y_h2 = filtfilt(sos, g, m);
AmplitudeWaterflow=sum(abs(y_h2));
a=a+1
%%write the value of Amplitude to a csv file with file name in one
%%column and value in other
end
0 comentarios
Respuesta aceptada
MJFcoNaN
el 18 de Abr. de 2022
table is a good choice.
% your code
% ...
files = dir( fullfile(indir, '*.csv'));
tbl = struct2table(files);
tbl.AmplitudeWaterflow=NaN(length(tbl.name),1);
for file = files'
% your code
% ...
% you count a from 0, therefore:
a=a+1;
tbl.AmplitudeWaterflow(a)=sum(abs(y_h2));
end
% only keep two variables
tbl = tbl(:, {'name', 'AmplitudeWaterflow'})
writetable(tbl, 'output.xlsx')
Más respuestas (0)
Ver también
Categorías
Más información sobre File Operations 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!