Matlab中向量的相邻元素比率

时间:2016-09-15 17:54:24

标签: matlab

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

A = [1, 2, 3, 4, 5];
diff(A) = 1, 1, 1, 1

我正在寻找像以下这样的功能:

ratio(A) = 2, 1.5, 1.3333, 1.25

3 个答案:

答案 0 :(得分:7)

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

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

示例输出

>> 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

以上也适用于正面值和负值。

答案 1 :(得分:5)

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

exp(diff(log(abs(A))))
ans = 2, 1.5, 1.3333, 1.25

答案 2 :(得分:0)

您始终可以遍历A

的元素
for i = 2:length(A)
    ratio(i-1) = A(i)/A(i-1) ;
end

适用于正值或负值。