Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

Setting name of variable equal to name of imported file

Asked by John

John (view profile)

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

John

John (view profile)

Products

No products are associated with this question.

2 Answers

Answer by Robert Cumming

Robert Cumming (view profile)

on 19 Dec 2011

if you must do it then use dynamic fieldnames

   metadata.(sch_metadata.name) = cycle

3 Comments

John

John (view profile)

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

Robert Cumming (view profile)

on 19 Dec 2011

same theory. TO get the filename use:

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

Then: sch_metadata.net = filename;

John

John (view profile)

on 19 Dec 2011

Thanks very much

Robert Cumming

Robert Cumming (view profile)

Answer by Matt Tearle

Matt Tearle (view profile)

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

John (view profile)

on 19 Dec 2011

Thanks very much

Matt Tearle

Matt Tearle (view profile)

Contact us