使用之前和之后的值来分析所需值::: 辐射校准 - 条纹

Posted

技术标签:

【中文标题】使用之前和之后的值来分析所需值::: 辐射校准 - 条纹【英文标题】:Using value before and after to analyze desired value::: Radiometric Calibration - Streaking 【发布时间】:2012-07-17 14:32:48 【问题描述】:

假设我有一个 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)) (所以本质上是 (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_interpolateQ_n-1;
    actual = middle.middle_interpolateQ_n;
    after = middle.middle_interpolateQ_n+1;
    averg = ((before + after)/2);
    equation = (abs(actual-averg)/averg)*100;
    plot(equation);
end

【问题讨论】:

为什么使用单元格而不是矩阵?如果你输入一个向量,你可以在没有循环的情况下做任何事情。主要问题似乎是在最后一次迭代中“Q_n==length(input)”并且您访问了“Q_n+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

但您想让它在未来可能会查看代码的其他人可读。

【讨论】:

所以 13 仅比最大计数低 2,所以我可以为我的实际数据做一些类似 length(data) - 2 的事情?以及仅将 15 替换为 length(data) ,然后将 14 替换为 length(data) -1 ? 那是正确的,如果它只是一个 1xn 向量,您可以使用 end 而不是 length(data) 好的,所以我在 matlab 论坛上提交了另一个答案,看起来这两个都在做同样的事情,唯一的差异是你的答案从第 1 行开始,而另一个应用一个 NaN (因为我解释了为什么它不能用于引用第一行和最后一行)。无论如何,非常感谢您如此快速而明确的回复。 完全没问题。如果您想尝试考虑第一个和最后一个位置的数据,您总是可以用一些值填充矩阵。您可以通过 Matlab 对 padarray 函数的帮助找到一些相关信息,或者仅使用该逻辑并制作自己的焊盘,因为您实际上只需要焊盘顶部和底部。 实际上很好,你的没有包含 NaN,因为我正在寻找最大值,我可以快速浏览变量的工作区中的 max 列并得到我想要的做。

以上是关于使用之前和之后的值来分析所需值::: 辐射校准 - 条纹的主要内容,如果未能解决你的问题,请参考以下文章

如何从 BLE 制造商数据抖动中获取所需值

在 sqlite 查询中如何获取具有所需值的特定行和列

至少一个表包含所需值时的 SQL JOIN:这可以在单个查询中实现吗?

MySQL查询返回资源ID#8,而不是所需值[关闭]

STM32WB HSE校准

Android:从视频中删除所有元数据