Assign variables while importing data

17 次查看(过去 30 天)
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.

采纳的回答

Stephen23
Stephen23 2020-1-27
编辑:Stephen23 2020-1-28
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 个评论
ahmi ali
ahmi ali 2020-1-28
Thanks a lot for your help!
Is there a way to extract data from struct and add it to the matrix M ? I want to plot the data from the struct into a single graph, so I want that the function is applied simultaneously on all data. That means the Matrix M has e.g 1024*5 , 5 coloumns in total. I hope I made the question clear enough.
Stephen23
Stephen23 2020-1-28
编辑:Stephen23 2020-1-28
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:

请先登录,再进行评论。

更多回答(0 个)

类别

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

Community Treasure Hunt

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

Start Hunting!

Translated by