假设我有一个1x15的数据表
[21 78 33 59 90 26 88 54 36 63 72 37 48 93 56]
因此,对于我的条纹方程式,我需要实现这个:
%Streaking = {[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
答案 0 :(得分: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
但是对于那些可能会在将来查看代码的人来说,你想让它保持一定的可读性。