3

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

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');

但这不起作用:(

4

3 回答 3

4

您正在尝试使用file_variables可能不存在的 name 清除变量。你想要的是:

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

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

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

这将是evalin.

更多信息:

[a b c]连接a,bc中的字符串,因为字符串本身就是1xN数组。
{:}将元胞数组作为逗号分隔的列表返回,然后将其输入到sprintf,更多信息请点击此处

于 2012-11-09T15:04:15.023 回答
1

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

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

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

变量clear_names是一个字符串单元格

格鲁斯

于 2013-07-08T09:44:01.043 回答
1

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

我称之为wipe.m

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

我对 stackoverflow 的第一个贡献

多吉

于 2013-07-24T10:13:54.580 回答