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 行和第 15 行,因为第 1 行不能有 Q_n-1,第 15 行不能有 Q_n+1)

我在想一些事情可能是这样的:

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)

当然,你可以把这一切放在一条线上,让它看起来很复杂......

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