Matlab中向量的相邻元素比率

Joe*_*Joe 0 matlab

我喜欢使用diff(A),但这次我正在寻找矢量元素之间的比率.

A = [1, 2, 3, 4, 5];
diff(A) = 1, 1, 1, 1
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个像以下的功能:

ratio(A) = 2, 1.5, 1.3333, 1.25
Run Code Online (Sandbox Code Playgroud)

ray*_*ica 7

简单索引有什么问题?链接exp,diff然后log似乎是在开销相当沉重.只需将分子访问元素从第二个位置开始到结尾,然后按分母从第一个位置开始到第二个位置分割:

ratio = A(2:end) ./ A(1:end-1);
Run Code Online (Sandbox Code Playgroud)

示例输出

>> A = [1 2 3 4 5]

A =

     1     2     3     4     5

>> ratio = A(2:end) ./ A(1:end-1);
>> ratio

ratio =

    2.0000    1.5000    1.3333    1.2500
Run Code Online (Sandbox Code Playgroud)

以上也适用于正值和负值.


Joe*_*Joe 5

如果A只包含正元素,则此解决方案适用于多维数组:

exp(diff(log(abs(A))))
ans = 2, 1.5, 1.3333, 1.25
Run Code Online (Sandbox Code Playgroud)