我喜欢使用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)
简单索引有什么问题?链接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)
以上也适用于正值和负值.
如果A只包含正元素,则此解决方案适用于多维数组:
exp(diff(log(abs(A))))
ans = 2, 1.5, 1.3333, 1.25
Run Code Online (Sandbox Code Playgroud)