假设我有一个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发布于 2012-07-17 23:17:17
我把它分成了几部分,这样你就能看到我在做什么。它也只适用于这个特定的数据集,因为索引是硬编码的(但我打赌您可以弄清楚如何使它适用于您拥有的任何数据集)。
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但您希望使其具有一定的可读性,以供将来可能查看代码的其他人阅读。
https://stackoverflow.com/questions/11524809
复制相似问题