我用 Matlab 的 trapz 函数得到了一个奇怪的结果。我有两个变量,zptest 和 omega,它们都是正数,3000x2x1 数组。
当我绘制 zptest vs omega (plot(zptest(:,1,1),omega(:,1,1)) 曲线显然是正的并且在积分时应该给出正结果。然而,情况并非如此,因为如下图:
答案 =
-0.049999940237341
只是为了证明 omega 和 zptest 都是正数:
答案 =
空矩阵:0×1
答案 =
空矩阵:0×1
我知道我没有为我实际做的事情提供任何上下文,但这似乎是一个与上下文无关的问题。有谁知道发生了什么?
最佳答案
尝试按升序对 x 重新排序(以及相应的 y 值):
x_order = x(end:-1:1); %fliplr
y_order = y(end:-1:1); %fliplr
trapz(x_order, y_order)
在
trapz(x,y)
中,通过 diff(x,1,1) 应用 x 的微分,即 [x(2:n,:) - x(1:n-1,:)].
如果您的 x 是下降的,这将给出负的 dx。不管是正面的还是负面的。但是,在 plot
中,曲线将显示为正定(您实际上看不到点的顺序,只是平面上两个向量的配对)。示例 (比较以下内容):
x = [-1 -0.5 0]; y = 0.5-x;
figure; plot(x,y); hold on; plot(-x, y,'r')
trapz(x, y)
trapz(-x, y)
figure; plot(x, y); hold on; plot(fliplr(-x), fliplr(y),'r')
trapz(fliplr(-x), fliplr(y))
关于matlab - Trapz 给出奇怪的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11973800/