如何在 MATLAB 中将函数变量保存到文件

How to save function variable to file in MATLAB

我想制作一个脚本来保存 "base name" 中的多个基本变量。我的尝试是这样的:

function [outargs] = save_with_basename(b)

basePath = 'C:\path\';

Var1 = evalin('base', [b '_1']);
Var2 = evalin('base', [b '_2']); % .. etc

for i=1:N
    save([basePath b '_' int2str(i) '.mat'], ['Var' int2str(i)]);
end

end

这会保存文件,但保存在文件中的变量称为 Var1(见图),但我希望它被称为 'Foo_1' 如果函数是用 :

save_with_basename('Foo');

我认为 save 的第二个参数与函数变量一起使用,所以看起来我必须动态更改它的名称(这可能是不可能的?),所以我想知道是否有办法我可以。

问题来了:

感谢您的帮助!

为了一切神圣的事物,请不要这样做。

如果你真的不得不这样做,请 不要这样做。

如果你真的真的真的必须想要,你确实需要使用动态变量(但这并没有多大用处现在有区别了,是吗?):

for i=1:N %what's N again?
   evalin('base',['Var' num2str(i) '=' b '_' num2str(i)]);
   evalin('base',['save([''' basePath b '_' num2str(i) '.mat''], [''Var' num2str(i) '''])']);
end

这基本上会执行

Var1 = "b"_1; %with whatever b is
Var2 = "b"_2;
...
save(['C:\path\b_1.mat'],['Var1']); %with whatever b is
save(['C:\path\b_2.mat'],['Var2']);

在您的基本工作区中,因此它将在那里生成 Var* 变量。将灵魂出卖给魔鬼所付出的代价很小。请注意,我可能错过了第二个 evalin.

中单引号的转义