How to create multiple files with given one file name

2 次查看(过去 30 天)
d = 'E:\\ \\ DummyFile\\';
filePattern = fullfile(d, 'Run*');
file = dir(filePattern)
n = length(file)
for k = 1:n
baseFileName = file(k).name;
FullFileName = fullfile(d, baseFileName, 'dummy.csv');
temp = readtable(FullFileName, 'ReadVariableNames' true, 'ReadRowsNames' true);
for k ==1:
x = Nan(size(temp,1), size(temp, 2), n);
rowNames = temp.Properties.RowNames;
colNames = temp.Properties.VariableNames;
end
x(:, :, k) = temp{:, :};
end
%Finding Average and Std
Avg = mean(x,3);
Standard_deviation = std(x,0,3)
index_val = 1:size(x,3) % gives 1-30 numbers bez its total 30 files
for i=1:size(x,1) %looping over 96 of rows
for j=1:size(x,2) %looping over 20 of cols
y(:) = x(i, j, :)
p = polyfit(index_val, y, 1)
slope(i,j) = p(1);
end
end
%Convert Calculation back to table format for easier display
AvgT = array2table(Avg, 'VariableNames', colNames, 'RowNames', rowNames);
StdT = array2table(standard_deviation, 'VariableNames', colNames, 'RowNames', rowNames);
SlopeT = array2table(slope, 'VariableNames', colNames, 'RowNames', rowNames);
%I want to create a AvgT, StdT, and SlopeT files with given a one output file name, how should I do that? for example, when i give a file name output.csv then it will automattically create three output files as Output_AvgT.csv, Output_StdT.csv, and Output_SlopeT.csv
% Ask for the name of the file that the user wants to save.
startingFolder = d
defaultFileName = fullfile(startingFolder, '*.*');
[baseFileName, folder] = uiputfile(defaultFileName, 'Specify a file');
if baseFileName == 0
% User clicked the Cancel button.
return;
end
fullFileName = fullfile(folder, baseFileName)
% Open file for writing.
fid = fopen(fullFileName, 'wt');
if fid ~= -1
% Was able to open it successfully, now write stuff into it.
writetable(AvgT, fullFileName, 'Delimiter', ',', 'WriteRowNames', true);
writetable(StdT, fullFileName, 'Delimiter', ',', 'WriteRowNames', true);
writetable(SlopeT, fullFileName, 'Delimiter', ',', 'WriteRowNames', true);
fclose(fid);
else
errorMessage = sprintf('Error opening %s for output.', fullFileName);
uiwait(errordlg(errorMessage));
end

采纳的回答

Bjorn Gustavsson
Bjorn Gustavsson 2020-7-10
I'd do something like this:
fn = '/some/where/output.csv';
[pth,nmn,ext] = fileparts(fn);
nnmn = fullfile(pth,[nmn,'_std',ext]) % just make sure that ext comes with a leading '.'
That should give you the idea.
For more elaborate namings you can obviously use sprintf to include numbering and whatnot.
HTH
  2 个评论
Utsav Dobhi
Utsav Dobhi 2020-7-15
How should i generate three different file with given one file name from above code?
Bjorn Gustavsson
Bjorn Gustavsson 2020-7-15
编辑:Bjorn Gustavsson 2020-7-15
Should be just as simple as modifying thefilename assignment for the three different filenames you want:
nnmn1 = fullfile(pth,[nmn,'_stdT',ext]);
nnmn2 = fullfile(pth,[nmn,'_avgT',ext]);
nnmn3 = fullfile(pth,[nmn,'_SlopeT',ext]);

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Tables 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by