Accessing (loaded) Data, with a known variable Variable name. How do I avoid Eval?
2 次查看(过去 30 天)
显示 更早的评论
Hello, I'm looking to avoid eval. There are loaded variables that I would like to analyze, I do not know the names of the variables being loaded. The names can be found, but here is the problem.
varloaded.data = rand(1,5); %loaded from MAT, see below
varnames = who('v*');
data = eval([varnames{1} '.data']); %how to avoid this?
plot(data)
Now about the loading, the 'varloaded' is from a siglog in simulink. So what I actually load is
S = load('myfile.mat','logsout')
S.logsout.unpack('all')
Due to the unpack, the variables are not loaded into 'S'. So alternatively, is there was a way to 'unpack' into a variable? This would allow me to use the usual variable fieldname method.
Matlab2007a, Simulink6.6
3 个评论
Walter Roberson
2012-8-15
I do not see any other obvious method, but perhaps looking at the code for the unpack method (if it is available) might suggest possibilities.
采纳的回答
Daniel Shub
2012-8-22
While there might be a work around, it is not clear that you need one. The EVAL function is not inherently evil, it is just generally used poorly. This is a case where it seems to make sense. I am not a simulink user, but this question suggests that eval is more acceptable with simulink.
You are using eval to poof a single variable (data). If you add a few comments about why you are going this route, then you should be able to debug problems in the future. To help with debugging further, I would probably hide it in a function specifically designed to load simulink siglog files.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Model Verification 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!