基于matlab中变量名的表中计算

时间:2014-07-23 18:24:00

标签: matlab function

我正在尝试使用存储在表中的数据找到更好的计算解决方案。我有一个包含许多变量(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;

因为我需要定义每个输入/输出变量。我需要的是为每个变量分配函数系数/方程式,以及函数仅将其应用于特定子表中存在的变量的能力。

有什么建议吗?

0 个答案:

没有答案