我正在尝试使用存储在表中的数据找到更好的计算解决方案。我有一个包含许多变量(100+)的大表,我从中选择较小的子表,只有两个观察值,它们与较小的变量选择有所不同。因此,结果表看起来与此类似:
air bbs bri
_________ ________ _________
test1 12.451 0.549 3.6987
test2 10.2 0.47 3.99
diff 2.251 0.078999 -0.29132
现在,我需要将'diff'行与变量之间不同的各种系数相乘。我可以使用以下代码获得相同的结果:
T(4,:) = array2table([T.air(3)*0.2*0.25, T.bbs(3)*0.1*0.25, T.bri(3)*0.7*0.6/2]);
但是,我需要更灵活的解决方案,因为应用程序之间的变量选择会有所不同。我认为更好的解决方案可能是使用varfun或rowfun和speficic函数,它将根据变量名称分配正确的系数/方程:
T(4,:) = varfun(@func, T(3,:), 'InputVariables', {'air' 'bbs' 'bri'});
或
T(4,:) = rowfun(@func, T(3,:), 'OutputVariableNames', T.Properties.VariableNames);
然而,我现有的解决方案与上面的基本计算同样不灵活:
function [air_out, bbs_out, bri_out] = func(air, bbs, bri)
air_out = air*0.2*0.25;
bbs_out = bbs*0.1*0.25;
bri_out = bri*0.7*0.6/2;
因为我需要定义每个输入/输出变量。我需要的是为每个变量分配函数系数/方程式,以及函数仅将其应用于特定子表中存在的变量的能力。
有什么建议吗?