0

1x15 のデータ テーブルがあるとします。

 [21 78 33 59 90 26 88 54 36 63 72 37 48 93 56]

したがって、ストリーキング方程式では、これを実装する必要があります。

% ストリーキング = {[abs(Q_n - ((Q_n-1 + Q_n+1)/2))] / ((Q_n-1 + Q_n+1)/2)))}*100

式の説明:

値 90 を Q_n に割り当てましょう (これはセル (1,5) から取得されます)。この値を使用すると、Q_n-1 の場合は値 59 が必要になり、Q_n+1 の場合は値 26 が必要になります (したがって、 (1,4) の前のセルと (1,6) の後のセルの本質)

Q_n = 90

Q_n-1 = 59

Q_n+1 = 26

私の質問は次のとおりです。データセット全体に対してこれをどのように行い、それらをストリーキング方程式に適用しますか? (行 1 に Q_n-1 を指定できず、行 15 に Q_n+1 を指定できないため、行 1 と 15 を除く)

私はおそらくこれに沿って何かを考えていました:

Q_n = 1;
while Q_n < length(middle.middle_interpolate)
    Q_n = Q_n+1;
    before = middle.middle_interpolate{Q_n-1};
    actual = middle.middle_interpolate{Q_n};
    after = middle.middle_interpolate{Q_n+1};
    averg = ((before + after)/2);
    equation = (abs(actual-averg)/averg)*100;
    plot(equation);
end
4

1 に答える 1

1

これをいくつかのパーツに分割して、何をしているかを確認しました。また、インデックスがハードコーディングされているため、この特定のデータセットでのみ機能します (ただし、所有している任意のデータセットで機能させる方法を理解できるはずです)。

averg = mean([Qn(1:13),Qn(3:15)],2); % this is just getting your averg value.
actual = Qn(2:14);
equation = abs(actual-averg)./averg*100;
plot(equation)

もちろん、これをすべて 1 行にまとめて、非常に複雑に見せることもできます...

equation = abs(mean([Qn(1:13),Qn(3:15)],2) - Qn(2:14))./mean([Qn(1:13),Qn(3:15)],2)*100

ただし、将来コードを見る可能性のある他の人のために、ある程度読みやすくしておく必要があります。

于 2012-07-17T15:17:17.447 に答える