我有两个表示函数 f(x) 的向量和另一个向量 f(ax+b),即 f(x) 的缩放和移位版本。我想找到最佳的缩放和偏移因子。
*最佳 - 通过最小二乘误差、最大似然等方法
有什么想法吗?
例如:
f1 = [0;0.450541598502498;0.0838213779969326;0.228976968716819;0.91333736150167;0.152378018969223;0.825816977489547;0.538342435260057;0.996134716626885;0.0781755287531837;0.442678269775446;0];
f2 = [-0.029171964726699;-0.0278570165494982;0.0331454732535324;0.187656956432487;0.358856370923984;0.449974662483267;0.391341738643094;0.244800719791534;0.111797007617227;0.0721767235173722;0.0854437239807415;0.143888234591602;0.251750993723227;0.478953530572365;0.748209818420035;0.908044924557262;0.811960826711455;0.512568916956487;0.22669198638799;0.168136111568694;0.365578085161896;0.644996661336714;0.823562159983554;0.792812945867018;0.656803251999341;0.545799498053254;0.587013303815021;0.777464637372241;0.962722388208354;0.980537136457874;0.734416947254272;0.375435649393553;0.106489547770962;0.0892376361668696;0.242467741982851;0.40610516900965;0.427497319032133;0.301874099075184;0.128396341665384;0.00246347624097456;-0.0322120242872125]
*注意 f(x) 可能是不可逆的...
谢谢,
奥哈德
最佳答案
对于每个 f(x)
,取 f(x)
的绝对值并将其归一化,使其可以被视为其支持的概率质量函数。计算E[x]
的期望值和Var[x]
的方差。然后,我们有那个
E[a x + b] = a E[x] + b
Var[a x + b] = a^2 Var[x]
使用上述等式和已知的 E[x]
和 Var[x]
计算 a
和 b
。从您的示例中获取 f1
和 f2
的值,以下 Octave 脚本执行此过程:
% Octave script
% f1, f2 are defined as given in your example
f1 = [zeros(length(f2) - length(f1), 1); f1];
save_f1 = f1; save_f2 = f2;
f1 = abs( f1 ); f2 = abs( f2 );
f1 = f1 ./ sum( f1 ); f2 = f2 ./ sum( f2 );
mean = @(x)sum(((1:length(x))' .* x));
var = @(x)sum((((1:length(x))'-mean(x)).^2) .* x);
m1 = mean(f1); m2 = mean(f2);
v1 = var(f1); v2 = var(f2)
a = sqrt( v2 / v1 ); b = m2 - a * m1;
plot( a .* (1:length( save_f1 )) + b, save_f1, ...
1:length( save_f2 ), save_f2 );
axis([0 length( save_f1 )];
输出是
关于algorithm - 找到两个向量之间的最佳/比例/偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13563453/