Matlab工作区如何按关键词筛选并查看特定变量的值?
嘿,我之前在处理大量Matlab变量的时候也遇到过这个问题,给你分享几个好用的解决办法,既能筛选出关键词匹配的变量,还能直接查看它们的值:
方法1:结合
who与遍历查看变量名和值 首先用who搭配通配符筛选出包含目标关键词的变量名列表,再通过循环逐个查看对应的值:
% 筛选所有名称包含"Add"的变量 matching_var_names = who('*Add*'); % 遍历输出每个变量的名称和值 for idx = 1:length(matching_var_names) var_name = matching_var_names{idx}; fprintf('变量名称:%s\n', var_name); fprintf('变量值:\n'); disp(eval(var_name)); fprintf('--------------------------\n'); end
这里的通配符*可以灵活调整:比如要匹配以"Add"开头的变量就用'Add*',匹配以"Add"结尾的就用'*Add'。
方法2:用
whos获取更全面的变量信息 whos比who能获取更多变量属性(比如类型、大小),同样支持通配符筛选,适合需要了解变量更多细节的场景:
% 获取包含"Add"的变量详细信息 matching_var_info = whos('*Add*'); % 遍历输出 for idx = 1:length(matching_var_info) var_detail = matching_var_info(idx); fprintf('变量名:%s | 类型:%s | 大小:%s\n', ... var_detail.name, var_detail.class, mat2str(var_detail.size)); fprintf('变量值:\n'); disp(eval(var_detail.name)); fprintf('--------------------------\n'); end
方法3:更安全的无
eval写法(推荐) eval虽然便捷,但在变量名复杂时可能有风险,用evalin直接从基础工作区获取变量会更稳妥:
% 从基础工作区筛选匹配的变量名 matching_vars = evalin('base', 'who(''*Add*'')'); % 逐个获取变量值并输出 for idx = 1:length(matching_vars) var_name = matching_vars{idx}; var_value = evalin('base', var_name); fprintf('变量名:%s\n', var_name); fprintf('变量值:\n'); disp(var_value); fprintf('--------------------------\n'); end
额外小技巧:用Matlab图形界面快速筛选
如果不想写代码,直接在Matlab的工作区浏览器右上角找到搜索框,输入关键词"Add",就能实时筛选出匹配的变量,点击变量就能直接查看它的值,非常方便!
内容的提问来源于stack exchange,提问作者Sack11
相关产品推荐
相关产品推荐

