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!

采纳的回答

Andrew Newell
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 个评论
Andrew Newell
Andrew Newell 2012-1-9
Actually, the Cyclist's solution would also work nicely in a loop.
the cyclist
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
Sean de Wolski 2012-1-9
Why use eval? Nothing in that statement looks like it couldn't be done without it.

the cyclist
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));

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by