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

时间:2015-10-12 22:26:44

标签: matlab workspace

我想创建一个从“基本名称”中保存多个基本变量的脚本。我的尝试看起来像这样:

SELECT * FROM Items 
WHERE (Balance > 0) 
   OR (Item Not Like '%XF%' AND Balance = 0)

这会保存文件,但保存在文件中的变量称为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 (参见图片),但如果调用函数,我希望它被称为'Foo_1':

Var1

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

以下是问题: enter image description here

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

为了圣洁的一切,请不要这样做。

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

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

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中单引号的转义。