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!