使用以下代码,我将变量添加到基础工作区:
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');
但这不起作用:(
答案 0 :(得分:4)
您正在尝试清除名称为file_variables
的变量,该变量可能不存在。你想要的是:
evalin('base',['clear' sprintf(' %s',file_variables{:})]);
如果你想了解发生了什么:在你的函数中运行并调试这一行,然后检查结果
['clear' sprintf(' %s',file_variables{:})]
这将是由evalin
运行的命令。
[a b c]
连接a
,b
和c
中的字符串,因为字符串本身是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的第一个贡献
杜奇