for loop and "importdata" function

2 vues (au cours des 30 derniers jours)
A Westergaard
A Westergaard le 8 Août 2012
Hi. I hope some of you have time to help me with this one: I am trying to import some ascii-files with a 5 line header plus tab-separated numbers. I want to sum the tab-separated numbers only, and I have 200 files. The code I have written is:
clear;
files = dir('H:\testmappe_sletmig');
for i=1:length(files)
data = importdata(files(i).name, '\t', 6);
summarise = sum(data(:));
end
xlswrite(summarise_fetch,summarise);
However, I get an error message saying
"Error using importdata (line 215)
Unable to load file.
Use TEXTSCAN or FREAD for more complex formats.
Error in extractsum (line 8)
data = importdata(files(i).name, '\t', 6);
Caused by:
Error using fileread (line 27)
Could not open file .. Invalid argument."
Any help is much appreciated!
  4 commentaires
per isakson
per isakson le 9 Août 2012
Can you import the files interactively with the Import Wizard? The [Import Data] button in the Workspace toolbar.
A Westergaard
A Westergaard le 9 Août 2012
Modifié(e) : A Westergaard le 9 Août 2012
Hi. Yes, I can import them manually by choosing "Import Data", either from Matlabs browser (right-click file -> Import Data) or with the Import Data button in the Workspace toolbar. The wizard automatically detects the header (5 lines) and the tab-separated data. The result is a textdata-matrix (with header info) and a data-matrix (with the actual data). Thanks

Connectez-vous pour commenter.

Réponse acceptée

A Westergaard
A Westergaard le 9 Août 2012
Ah, here we go. Problem solved!
clear;
files = dir('H:\testmappe_sletmig\*.txt');
for i=1:length(files)
eval(['x = importdata(files(i).name)']);
summarise(i) = sum(x.data(:));
end
xlswrite('summarise_fetch',summarise);

Plus de réponses (1)

A Westergaard
A Westergaard le 9 Août 2012
Thank you for your inputs. I managed to get it working, however one challenge remains: I would like to export the sum of the data matrices to excel, so the sum of each input file is stored in a corresponding cell in an excel-sheet. When I use the code below, the sum of all the input files are stored in a single cell.
clear;
files = dir('H:\testmappe_sletmig\*.txt');
for i=1:length(files)
eval(['x=importdata(files(i).name)']);
summarise = sum(x.data(:));
end
xlswrite('summarise_fetch',summarise);

Catégories

En savoir plus sur Workspace Variables and MAT Files dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by