how to execute a loop through all the variables in the workspace?

Hi all,
Here's my question:
I ha about 300 variables in my workspace, which are named accordingly to the contents (are macroeconomic time series for 20 countries)
for example:
  • gdpUK (is the GDP of United Kingdom)
  • gdpUS (is the GDP of United States)
  • ... (and so on for 20 countries)
  • reerUK (is the real effective exchange rate for the United Kingdom)
  • reerUS (REER for US)and so on
I would like to standardise these series, i need something that do:
for i= first variable: last variable
i=(i-mean(i))/std(i)
end
how can I do this?
thank you in advance for your help! :)

 Accepted Answer

It would have been better to store your data in tables or even cell arrays or maps. Anyway:
for cv = who('gdp*')' %transpose to get a row cell array
eval(sprintf('mean%1$s = (%1$s - mean(%1$s)) / std(%1$s);', cv{1})); %1$s is replaced by var name, output is named meanvarname
end
%same with 'reer*'

1 Comment

Thank you very much!
It solved the problem even if, as you said, it isn't certainly the most efficient solution. Actually I was looking for a quick&dirty solution, and I've found it!
Once more, thank you!

Sign in to comment.

More Answers (0)

Categories

Asked:

on 5 Oct 2014

Commented:

on 5 Oct 2014

Community Treasure Hunt

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

Start Hunting!