Assign variables while importing data
17 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
ahmi ali
el 27 de En. de 2020
I have a data set with multiples files, and there are 2 coloumns in each file. I have imported the files using the following code:
files = dir('*.txt');
for i=1:length(files)
eval(['load ' files(i).name ' -ascii']);
end
I have the data in my workspace now but I need to assign variables to each coloumn. Furthermore, I have to use those variables in a function to normalize all the data at the same time and plot in a single graph.
Is there any approach I can take to assign variables so that the code goes through each file one by one, and take the assigned variables to give answer for all dataset at once.
function [zero,norm,ramanzeronorm] = zeronorm(wavenumber,rm)
My variables are wavenumber and rm.
Any help will be appreciated.
0 comentarios
Respuesta aceptada
Stephen23
el 27 de En. de 2020
Editada: Stephen23
el 28 de En. de 2020
Do NOT use eval for importing data, unless you intentionally want to force yourself into writing slow, complex, buggy code. Read this to know why:
Instead you should import the data into a matrix, optionally assigning it to one array using indexing, for example using a cell array as the documentation examples show:
Or using the same structure returned by dir:
S = dir('*.txt');
for k = 1:numel(S)
M = dlmread(S(k).name); % better than LOAD.
... do whatever with matrix M, e.g.:
wn = M(:,1); % wavenumber
rn = M(:,2); % rn
...
S(k).data = M; % optional: store any data you want for later.
end
Then you can trivially access the data in that structure, e.g. using loops or indexing:
For example, you can easily vertically concatenate all of the file data together:
alldata = vertcat(S.data);
2 comentarios
Stephen23
el 28 de En. de 2020
Editada: Stephen23
el 28 de En. de 2020
You can store any data you want in the structure, e.g.:
for ...
...
S(k).mycolumn = whatever column of data you want to store;
end
mymat = [S.mycolumn];
What size mymat is depends entirely on how often the loop iterates and on the size of each column: if each column you store has size 1024x1 and it iterates five times, then mymat will have size 1024x5.
Read more about how this works:
Más respuestas (0)
Ver también
Categorías
Más información sobre Structures 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!