matlab 如何以动态的变量名保存变量

来源:百度知道 编辑:UC知道 时间:2024/05/24 10:30:32
例如:
for i=1:3
save filename name
end

如何实现变量名 name 随着i而变化
我是想在循环中将数值存储在不同的变量中,而不是存在同一变量中,此情况会覆盖循环中的值

%%% =============== hujia1.m ========================
%%%
%%% 方法一 用sprintf与eval组合
%%% 可以边生成代码边执行,及其灵活
%%% 但在次数很多的循环体内部尽量不要使用
%%% 因为eval需运行时编译,速度不快

for i=3:5
s=sprintf('m%d=magic(%d);save hujia.mat m%d;',i,i,i); % 对i的每个取值生成一行不同的代码
eval(s); % 执行生成的代码
end

%%% =============== hujia2.m ========================
%%% 方法二 用函数的方式使用save就行了
%%% 在matlab里,像save,print等都有两种使用方式:
%%% 函数形式: save(filename,varname)
%%% 例:x1=rand(3,3);save('hujia.mat','x1');
%%%
%%% 命令形式: save filenam varname
%%% 例:x1=rand(3,3);save 'hujia.mat' x1

m=[];
for i=3:5
m(i)=magic(i);
s=sprintf('m(%d)',i);%生成变量名
save('hujia.mat',s);
end

%%% ================================================

for i=1:3
x=i;
save vars.mat x;
end

我试了下,vars.mat中保存的x就是3,其实是经过了三个循环,第一次x保存的是1,第二次是2,循环