我想使用以下语法加载ASCII文件:
load('10-May-data.dat')
返回的输出变量名称应为X10_May_data
。
有没有办法在Matlab中获取变量名?如果我想使用正则表达式进行翻译,我该怎么办?例如,在文件名中的任何下划线或数字之前加上X
,并用下划线替换任何其他非字母字符。
答案 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
要进行更复杂的修改,请使用regexp
或regexprep
。获得新名称后,可以使用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。