私はdiff(A)を使いたいが、今度はベクトルの要素間の比率を探している。Matlabのベクトルの隣接する要素の比率
私の好きな機能を探していますA = [1, 2, 3, 4, 5];
diff(A) = 1, 1, 1, 1
:A
のみ正の要素が含まれている場合は、このソリューションは多次元配列上で動作
ratio(A) = 2, 1.5, 1.3333, 1.25
私はdiff(A)を使いたいが、今度はベクトルの要素間の比率を探している。Matlabのベクトルの隣接する要素の比率
私の好きな機能を探していますA = [1, 2, 3, 4, 5];
diff(A) = 1, 1, 1, 1
:A
のみ正の要素が含まれている場合は、このソリューションは多次元配列上で動作
ratio(A) = 2, 1.5, 1.3333, 1.25
単純なインデックス作成で何が問題になりますか?チェーンexp
、diff
、次にlog
はオーバーヘッドがかなり重いようです。単に第2位置から分子アクセス要素を有する端部および分割要素単位の第二の最後の位置に最初の位置から分母によって:
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
上記は、正の値と負の値の両方にも適用されます。
これは単にOPのニーズを満たすため+1です。 – mehmet
マイナス1のための 'diff': - P –
:
exp(diff(log(abs(A))))
ans = 2, 1.5, 1.3333, 1.25
あなたが要素の上に常にループすることができますA
for i = 2:length(A)
ratio(i-1) = A(i)/A(i-1) ;
end
正の値または負の値で動作します。
diff()も使います:-) –
'diff()'関数を使うと決めたら、この 'sign(A(1:end-1))。* sign(A 2:end))。* exp(diff(log(abs(A)))) '長いです。 – mehmet