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

 Réponse acceptée

Guillaume
Guillaume le 11 Oct 2016
[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 commentaires

Isma_gp
Isma_gp le 12 Oct 2016
I get an error: Undefined function 'compose' for input arguments of type 'char'.
Guillaume
Guillaume le 12 Oct 2016
Modifié(e) : Guillaume le 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by