Прямой ответ на ваш вопрос - использовать функцию assignin
, например, так (отредактировать: как Макдуфф предложил 10 минут назад):
%Starting with a Final structure containing the data, like this
Final.textdata = {'DateTime','St','uSt','Ln','W'};
Final.data = rand(365,4);
for ix = 1:4
assignin('base',Final.textdata{ix+1}, Final.data(:,ix));
end
Однако я настоятельно не рекомендую использовать имена динамических переменных для кодирования данных, подобных этой. Код, который начинается таким образом, обычно заканчивается спагетти-кодом, полным конкатенаций длинных строк и операторов eval
. Лучше использовать структуру, как это
for ix = 1:4
dataValues(Final.textdata{ix+1}) = Final.data(:,ix);
end
Или, чтобы получить тот же результат в одной строке:
dataValues = cell2struct(num2cell(Final.data,1), Final.textdata(2:end),2)