Importing variables from a txt or xlsx file

Hello everybody- I'm trying to ready some text/xlsx files from a folder and want to keep the variables from original file to output them in Matlab workspace for example (data-1, data2, data3 and data4 are my txt files) and for example
Data-1
a b c
1 2 2
4 5 6
0 0 1
for i = 1:4
fileName = ['data' num2str(i)];
dataStruct.(fileName) = load([fileName '.txt']);
end
Can I modify this code in a way that when I import let say data-1 using the above loop instead of importing one matrix it should import all of its variables a b c in work place so that I can use them to proceed for my work? so loop will be done after processing one file and will move to the next file data-2 read variables and so on
Thank you,
Amb

 Réponse acceptée

Walter Roberson
Walter Roberson le 20 Août 2015

0 votes

It is possible, yes, but only using a function that has been declared obsolete for years ("textread")
If you have R2013b or later you should consider using readtable()
Otherwise just split up the array after you read it.

2 commentaires

Thanks walter- now I want to link data in following loops close all; clear;
files = dir( '*.xlsx' ) ;
nFiles = length( files ) ;
names = cell( nFiles, 1 ) ;
data = cell( nFiles, 1 ) ;
for dId = 1 : nFiles names{dId} = files(dId).name ; fId = fopen( files(dId).name, 'r' ) ; cols = textscan( fId, '%f %f', 'headerlines', 1 ) ; data{dId} = [cols{:}] ; fclose( fId ) ; end
for dId = 1 : length( data )
fprintf( '\nFile: %s\n', names{dId} ) ;
disp( data{dId} ) ;
end
data=readtable('data.xlsx'); % at this point I would like to read data saved in files and then output parameters for each data file using loop below
for i=1:width(data); x = data.Properties.VariableNames(i); eval(sprintf('%s = data.%s', x{1}, x{1})); end I hope you can give me some suggestions here- Thanks
So here are more details I have list of files name with .xlsx extention from code above all I want is to read table to read names from list while each file is present in directory and retrieve variables something like this
for i = 1:length(names)
D(i) = names(i,:)';
end
C = D(:,1);
for i = 1:length(names)
A(i) =readtable(C(i));
end
for i=1:width(data); x = data.Properties.VariableNames(i); eval(sprintf('%s = data.%s', x{1}, x{1})); end
but its giving error input must be row vector of charactrers

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Data Import and Export dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by