assign input to variable name

1 view (last 30 days)
Trader
Trader on 19 Apr 2012
I'm putting together a script that builds a .mat file and I was wondering, how can I create an array based off the name of a string? Example:
file = 'data_abc';
full_path =['folder/',file,'.csv'];
import = importdata(full_path)
data_abc = import.data;
How do you take the string and convert it to a variable name?
Thanks!

Answers (1)

Matt Tearle
Matt Tearle on 19 Apr 2012
Generally this isn't a great idea, but if you want to, you can use eval. First make a string of the command you want to issue:
str = [file,' = import.data;'];
Then evaluate it as a command:
eval(str)
(Obviously you can combine these lines into one command, but I'm showing the steps for clarity.)
An alternative approach is to use a structure variable, using the filename as the fieldname:
x.(file) = import.data; % equivalent to x.data_abc = ...
  2 Comments
Daniel Shub
Daniel Shub on 19 Apr 2012
"it isn't a great idea" can be interpeted as "IT IS A REALLY BAD IDEA"
Walter Roberson
Walter Roberson on 19 Apr 2012
Structure field and use save() with the -struct flag.

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!