Buckingham Pi定理计算中MATLAB统计唯一符号数量的问题
MATLAB实现Buckingham Pi定理维度符号统计
核心需求
统计预设维度符号M、L、T、Theta在变量元胞数组param的每个维度字符串中是否出现(只要出现至少一次即计数为1,重复出现不重复计数),解决cellfun报错问题(适配MATLAB 2021b mlx环境)。
实现代码
% 替换为你的实际变量维度元胞数组 param = {'M L^2 T^-2', 'L T^-1', 'M Theta', 'L^3', 'T'}; % 预设维度符号集合 dim_symbols = {'M', 'L', 'T', 'Theta'}; [num_params, num_symbols] = deal(length(param), length(dim_symbols)); % 初始化计数矩阵:行=变量,列=维度符号,1=出现,0=未出现 count_matrix = zeros(num_params, num_symbols); % 遍历每个变量的维度字符串 for i = 1:num_params current_dim = param{i}; % 检查每个维度符号是否存在 for j = 1:num_symbols target_sym = dim_symbols{j}; % 用单词边界正则匹配,避免子串误识别 if ~isempty(regexp(current_dim, ['\b', target_sym, '\b'], 'once')) count_matrix(i,j) = 1; end end end % 输出结果 disp('维度符号出现计数矩阵(行:变量,列:M、L、T、Theta):'); disp(count_matrix);
关键说明
- 避开
cellfun报错:MATLAB 2021b中cellfun对匿名函数的参数兼容性有限,改用双层循环更稳定,也便于调试。 - 正则匹配逻辑:
\b是单词边界,确保只匹配独立的维度符号,比如不会把'M'误匹配为'MTheta'的一部分。 - 结果用途:
count_matrix可直接用于构建无量纲群的线性方程组,通过计算矩阵秩确定独立Pi项的数量。
内容的提问来源于stack exchange,提问作者WnGatRC456
相关产品推荐
相关产品推荐

