【问题标题】:integrate between curves曲线之间的积分
【发布时间】:2014-12-28 07:17:03
【问题描述】:

这是一个带有 2 个趋势的图:

我想找到黑色曲线下方的区域(黑色线条都是一个趋势的一部分),但在蓝色曲线上方。

%w = wavelength array, Tf = filter Transmission, Ts = spectrum Transmission
figure
plot(w,Tf,'b')
hold on
plot(w,Ts,'k')

【问题讨论】:

  • 我会自发地说:dT = max(Tf,Ts)-Tf; 对于 quadratur,您可以使用例如那么梯形规则:area = sum(diff(w) .* (dT(1:end-1) + dT(2:end)))/2;
  • @matheburg 今天我的大脑被炸了。你有解决方案,但trapz 是下半场。 :)
  • @chappjc in trapz.m 你可能会发现一行与我的非常相似:P
  • @matheburg 准确地说是 68 号线! ;) 顺便说一句,如果您愿意,我会说发布您的答案。它更具教育意义。
  • @chappjc 嗯,对 :D 但是,我们不应该更喜欢diff(w(:))' * (dT(1:end-1) + dT(2:end))/2吗?

标签: matlab integration area


【解决方案1】:

选择位于蓝线 (Tf) 上方的黑线 (Ts) 部分并积分 (trapz):

d = max(Ts-Tf,0); % or max(Tf,Ts)-Tf;  % thanks, matheburg!
trapz(w,d)

【讨论】:

  • 这不是真正的领域,它也应该取决于w(参见我上面的评论)。
  • @matheburg 真的!回答得太仓促了。那么使用trapz 怎么样?这行得通吗?
  • 应该是一样的... ;)
  • @user4204005 如果可行,请接受。谢谢! :)
  • 感谢@matheburg 和@chappjc!
猜你喜欢
  • 2017-10-07
  • 2019-08-15
  • 2022-11-24
  • 2020-09-22
  • 2021-09-21
  • 2019-02-07
  • 2017-10-12
相关资源
最近更新 更多