How to use who within eval
2 次查看(过去 30 天)
显示 更早的评论
Here is the code:
file_name = 'test';
eval(['file_length = length(who(''-file'',' file_name '));']);
But this doesn't work, because who requires a quoted string as a variable. Then I tried this,
eval(['file_length = length(who(''-file'', ''file_name'' ));']);
It didn't work, apparently. Now file_name showed up instead of the value I put in it. This sounds a very simple question, but I just don't know what to do. Help!
0 个评论
采纳的回答
Andrew Newell
2012-1-9
This is a working example:
clear
x = zeros(10,1); y = x;
save matlab.mat
file_name='matlab.mat';
eval('file_length = length(who(''-file'',file_name))')
file_length =
2
EDIT: Although I answered the question you asked, I agree with Sean and the Cyclist that it would be better not to use eval. See Loren's blog for some reasons.
3 个评论
the cyclist
2012-1-10
For example, even if you need the value of the looping variable in the file name, you can often use num2str() to convert the numeric to a string, and append it to the file name.
更多回答(2 个)
Sean de Wolski
2012-1-9
Why use eval? Nothing in that statement looks like it couldn't be done without it.
0 个评论
the cyclist
2012-1-9
Agree with Sean that you do not need eval() here. Try this:
file_name = 'test';
file_length = length(who('-file',file_name));
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Type Conversion 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!