Write calculated values to an excel file in column 2 and the file name in column 1
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
MJFcoNaN
il 18 Apr 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')
Più risposte (0)
Vedere anche
Categorie
Scopri di più su File Operations in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!