algorithm - 找到两个向量之间的最佳/比例/偏移

标签 algorithm matlab signal-processing octave model-fitting

我有两个表示函数 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]

simulated example: scale is  2+7/5, shift  42/55, resample bicubic

*注意 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] 计算 ab 。从您的示例中获取 f1f2 的值,以下 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 )];

输出是 enter image description here

关于algorithm - 找到两个向量之间的最佳/比例/偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13563453/

相关文章:

matlab - 为什么我的 improfile 函数的结果在 MATLAB 中返回镜像图?

python数据框,获取事件开始和结束的列表

python - 在 Python 中加快字符串与对象的配对

c - 带有 C 可执行文件的 Matlab 系统函数

arrays - 列出向量的所有可能组合

java - 如何将字节数组中的pcm样本转换为-1.0到1.0范围内的 float 并返回?

c++ - 使用 FFTW 只是转换到频域并返回得到与源完全不同的结果

c - 求 Z(n) 中 x 的乘法逆元,扩展欧几里德算法

algorithm - 计算用于定义二次贝塞尔曲线分段的参数

MATLAB 独立可执行文件