MATLAB Answers

John

Setting name of variable equal to name of imported file

Asked by John
on 19 Dec 2011

Hi,

I'm importing data into Matlab from excel via the following command:

cycle=xlsread('E:\DC.xlsx','Sheet1');

How can I set the name of the metadata to be the same as the name of the imported excel file.For example:

sch_metadata.name = 'DC';

It will be looping through files in a folder so I wont know the name in advance

Many thanks

  0 Comments

Products

No products are associated with this question.

2 Answers

Answer by Robert Cumming
on 19 Dec 2011

if you must do it then use dynamic fieldnames

   metadata.(sch_metadata.name) = cycle

  3 Comments

John
on 19 Dec 2011

Thanks for the reply,

Maybe I didn't describe it very well, I want to save it with the same as the imported excel file, not as the variable cycle.

Would you suggest the same in this case?

Many thanks

Full code:

sch_cycle=xlsread('E:\DC.xlsx','Sheet1');
nrows = size(cycle,1);
sch_grade=[0,0;nrows,0];
sch_key_on=[0 1; nrows 1];
sch_metadata.net = 'DC';
sch_metadata.proprietary='public';
save DC.mat

Robert Cumming
on 19 Dec 2011

same theory. TO get the filename use:

[fullpath, filename, ext] = fileparts ( 'E:\DC.xlsx' );

Then: sch_metadata.net = filename;

John
on 19 Dec 2011

Thanks very much


Answer by Matt Tearle
on 19 Dec 2011

If you're going to be looping on the files, you're probably doing something like

x = cellstr(ls('*.xlsx'));
for k = 1:length(x)
  % do stuff
end

In the "do stuff" bit, you should use fileparts to pull apart each filename string:

[~,fn] = fileparts(x{k});
sch_metadata.net = fn;
save(fn);
% or save([fn,'.mat']) if you want to be explicit

  1 Comment

John
on 19 Dec 2011

Thanks very much


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today