20210126 最近用matlab时,涉及到动态变量的生成与加载,为避免每次使用都上网查找一遍,故记录下。
1.动态变量的生成
for jj = 1:10
var_name = ['matrix_track_', num2str(jj)];eval([var_name,'=matrix_track']);
end
结果:在工作区产生 matrix_track_1, matrix_track_2,..., matrix_track_10等10个变量
2. 将生成的动态变量存储到一个.mat文件中
for jj = 1:10
save('matrix_track.mat', ['matrix_track_' num2str(jj)], '-append');
end
结果:将变量 matrix_track_1, matrix_track_2,..., matrix_track_10等存储到文件 matrix_track.mat中
3. 动态命名变量的加载(变量本质为矩阵)
for jj = 1:30
var_name = ['matrix_track_', num2str(jj)];
eval(['matrix_track=', var_name]);
matrix_morris = [matrix_morris; matrix_track];
end
结果:循环中第一行产生动态变量名,第二行引入中间变量matrix_track,将动态变量数据赋值给中间变量,第三行将所有的中间变量存储到一个总的矩阵matrix_morris中。
结果就是将30个matrix_track开头的变量合成一个matrix_morris。(举例)
第二行 与 动态变量的生成 正好时相反的。
4. 总结来说,上述容易在命令行窗口产生输出(本人并不希望),所以相比之下,还可以采用 动态文件名 来保存 相同名称的变量 。
for j = 1:10
file_name=['t_wa_Touch_error_new_matrix_A', num2str(j)]; % 动态变量名
save(file_name, 't_wa_Touch_error_new_matrix_A'); % 动态存储
end
结果:产生了t_wa_Touch_error_new_matrix_A1,...,t_wa_Touch_error_new_matrix_A10等10个.mat文件,其中每个mat文件都存储着名称为t_wa_Touch_error_new_matrix_A的变量。这种方便加载。