Using sprintf to get variables from a file

Hi,
I would like to extract some data from a file. The data comes with different variable names. For example, in order to get the names of the fields of interest called "FORCE_SH10", "FORCE_SH20", I use the following:
names_f = arrayfun(@(n)sprintf('FORCE_SH%02d',n),10:10:40,'Uni',false);
I would like a similar way to retrieve the following names: "FORCE_x_y" where x can be 1:4 and y can be 1:4 (with all possible combinations i.e. "FORCE_1_2", "FORCE_3_4" etc.)
Thanks

 Accepted Answer

[x, y] = ndgrid(1:4, 1:4); %first 1:4 is x range, 2nd 1:4 is y range
names_f = arrayfun(@(xx, yy) sprintf('FORCE_%d_%d', xx, yy), x(:), y(:), 'UniformOutput', false)
Or if you're using the new string class introduced in R2016b:
[x, y] = ndgrid(1:4, 1:4); %first 1:4 is x range, 2nd 1:4 is y range
names_f = compose('FORCE_%d_%d', x(:), y(:))

2 Comments

I get an error: Undefined function 'compose' for input arguments of type 'char'.
Guillaume
Guillaume on 12 Oct 2016
Edited: Guillaume on 12 Oct 2016
As I wrote:
"Or if you're using the new string class introduced in R2016b"
You're obviously not using R2016b, so use the first solution.

Sign in to comment.

More Answers (0)

Asked:

on 11 Oct 2016

Commented:

on 12 Oct 2016

Community Treasure Hunt

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

Start Hunting!