从Matlab中的加载函数加载获取输出变量名称

时间:2016-02-02 23:57:23

标签: matlab

我想使用以下语法加载ASCII文件:

load('10-May-data.dat')

返回的输出变量名称应为X10_May_data

有没有办法在Matlab中获取变量名?如果我想使用正则表达式进行翻译,我该怎么办?例如,在文件名中的任何下划线或数字之前加上X,并用下划线替换任何其他非字母字符。

1 个答案:

答案 0 :(得分:0)

who函数返回matlab中变量的名称。它还有一个内置的正则表达式,用于选择某些项目:

X10_May_data = [1 2 3];
save X10_May_data.mat X10_May_data
clear
load X10_May_data.mat
w = who('-regexp','X*')

w = 

    'X10_May_data'

然后,您可以对w{1}进行操作,以进行所需的任何替换。例如,使用strrep函数对字符串进行简单修改:

newvar = strrep(w{1},'May','latest')

newvar =

X10_latest_data

要进行更复杂的修改,请使用regexpregexprep。获得新名称后,可以使用eval

进行分配
eval([newvar '=' w{1}])  % like typing "X10_latest_data = X10_May_data"

X10_latest_data =

    1     2     3

[edit] PS我同意eval通常是个坏主意的评论;但有时你只需要完成完成的事情 :)对于其他方法,请参阅matlab page on the topic