我需要帮助解决与计算某些数据的加权几何平均值相关的优化和性能问题。
我用一点样本介绍了这个问题。 我编写了代码来计算WGM,下面是一个简单的例子。
% A matrix Example 3x3 matrix
% w column vector 3x1
% wgm row vector 1x3
A = rand(3);
w = [1,2,6]';
wgm = (prod(A.^w)).^(1/sum(w));
现在解决一般性问题:
假设我有一个新的矩阵大小为nxm 和一个由权重列组成的W矩阵,其中权重值可以从0到k,我需要所有列排列。
那就是 W矩阵的大小为nxk ^ n ,因为权重的性质和加权几何计算这个最终矩阵应该减少排除表示乘以a的列标量值从0到k的排列。
因此,如果我有一个像[1,1,0]这样的列,应该排除所有t * [1,1,0],t从0到k。 另一个例子:[1 2 3]应排除[2 4 6]或[3 6 9]等等。
基本理念: W矩阵的每个生成列都可以归一化,将每个权重除以k ,因此如果新的规范化列是冗余的,则不应添加然后转换回到uint8列,将内存消耗减少到12.5%。
所以考虑一个真实数据示例假设:
所以要解决的问题是:
添加了信息:
加权几何平均矩阵数据将通过一组更严格的规则进行验证,因此不会丢弃符合的行,对于最终的W矩阵也是如此,其中相应的列将被消除。
这可以在创建2个矩阵时更早地进行评估,以找到优化内存消耗的解决方案,同时可能效率较低。