MATLAB Answers

How to load text file to workspace variables?

3 views (last 30 days)
Tom Karlsson
Tom Karlsson on 25 Oct 2019
Commented: Stephen Cobeldick on 27 Oct 2019
Hi,
I wonder how to read/load variables from text file to matlab, with following format:
var1 val1
var2 val2
var3 val3
var4 val4
I want them to be loaded to workspace as variables with string name in var and numeric value as val.

  2 Comments

dpb
dpb on 26 Oct 2019
In general, that's a bad idea -- use MATLAB array syntax instead.

Sign in to comment.

Answers (1)

per isakson
per isakson on 26 Oct 2019
Edited: per isakson on 26 Oct 2019
"load to workspace as variables with string name in var and numeric value as val." There need to be a really good reason to do that, because it comes at a cost. Read Why Variables Should Not Be Named Dynamically and then read Magically Making Variables Appear in a Workspace is Risky a second time.
After reading try
cssm
which outputs
Name Size Bytes Class Attributes
S 1x1 736 struct
var1 1x1 8 double
var2 1x1 8 double
var3 1x1 8 double
var4 1x1 8 double
where (in one m-file named cssm.m)
%%
fid = fopen( 'cssm.txt' );
cac = textscan( fid, '%s%f' );
fclose( fid );
%%
for jj = 1 : length(cac{1})
S.( cac{1}{jj} ) = cac{2}(jj); % dynamic names in a structure
assign( cac{1}{jj}, cac{2}(jj) ) % magically "poof" variables
end
whos S v*
function assign( name, val )
assignin( 'caller', name, val );
end
and where cssm.txt contains
var1 1
var2 2
var3 3
var4 4
Finally, are there any good reasons not to use "dynamic names in a structure" ?

  1 Comment

Sign in to comment.

Sign in to answer this question.