Я думаю, что прямой ответ на ваш вопрос:
sampledata = [...
0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18; ...
0.19 0.20 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.30 0.31 0.32 0.33 0.34 0.35 0.36 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36];
for ix = 1:(size(sampledata,2)/2)
assignin('base',['M' sprintf('%02d',ix)], sampledata(:,ix*2+[-1 0]))
end
Это создает 18 переменных с именами от «M01» до «M18» с частями матрицы sampledata
.
Однако, пожалуйста, не используйте такие имена динамических переменных. Это усложнит любой другой фрагмент кода, к которому он относится. Используйте массив ячеек, трехмерный массив (как предложено @Johannes_Endres +1 BTW) или структуру. Все, что избавляет вас от необходимости писать что-то подобное позже:
%PLEASE DO NOT USE THIS
%ALSO DO NOT BACK YOURSELF INTO A CORNER WHERE YOU HAVE TO DO IT IN THE FUTURE
varNames = who('M*');
for ix = 1:length(varNames )
str = ['result(' num2str(ix) ') = some_function(' varNames {ix} ');'];
eval(str);
end
Я видел такой код, и он медленный и чрезвычайно громоздкий в обслуживании, не говоря уже о головной боли и боли в вашем внутреннем косметометре.