从函数内清除基本工作空间变量

时间:2012-11-09 15:01:34

标签: matlab

使用以下代码,我将变量添加到基础工作区:

function data_startup()
bdclose all;
data=load(fullfile('B', 'C', 'data.mat')); 
file_variables=fieldnames(data);% get the field names as cell array
for ii=1:length(file_variables)
     assignin('base', file_variables{ii}, data.(file_variables{ii}));
end

现在,我想清除基础工作区中的变量,我试过了:

evalin('base','clear file_variables');

但这不起作用:(

3 个答案:

答案 0 :(得分:4)

您正在尝试清除名称为file_variables的变量,该变量可能不存在。你想要的是:

evalin('base',['clear' sprintf(' %s',file_variables{:})]);

如果你想了解发生了什么:在你的函数中运行并调试这一行,然后检查结果

['clear' sprintf(' %s',file_variables{:})]

这将是由evalin运行的命令。

更多信息:

[a b c]连接abc中的字符串,因为字符串本身是1xN数组。
{:}以逗号分隔的列表返回单元格数组,然后将其输入sprintf,有关此here的更多信息。

答案 1 :(得分:1)

以上不起作用。我不知道为什么。函数没有提示。

但这是一个有效的解决方案:

clear_names = fieldnames(Data.(itv{i}));   %Get fieldnames to be deleted
feval(@clear,clear_names{:})

变量clear_names是字符串

的单元格

格鲁斯

答案 2 :(得分:1)

清除所有基础变量,关闭所有matlab窗口并清除命令窗口。

我称之为wipe.m

function wipe
clc;
bdclose all;
close all;
imtool close all;
evalin('base','clear all');

我对stackoverflow的第一个贡献

杜奇

相关问题