我喜欢使用diff(A),但这次我正在寻找矢量元素之间的比率。
A = [1, 2, 3, 4, 5];
diff(A) = 1, 1, 1, 1
我正在寻找像以下这样的功能:
ratio(A) = 2, 1.5, 1.3333, 1.25
答案 0 :(得分:7)
简单索引有什么问题?链接exp
,diff
然后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
适用于正值或负值。