【问题标题】:trapz intergation陷阱整合
【发布时间】:2013-01-07 17:02:10
【问题描述】:

我有一个数字数组,我想对数组 seperatley 中的每一列进行积分,最后在积分后得到一个数字数组。

我尝试了“trapz”函数,但我得到了一个值,我该怎么做上面想要的?

这是我的代码:

t=-1:0.001:1;
x1=100*sinc(100*t);
x2= 100*(sinc(100*t)).^2;
W= -2000*pi:2*pi:2000*pi;
T=-1:0.001:1;
u=x1.*exp(-1i.*W.*t);
v=x2.*exp(-1i.*W.*t);
X11= trapz(t,u);
X22= trapz(t,v);

提前致谢。

【问题讨论】:

  • 我是不是弄错了,或者您正在给 trapz 一个一维数组,该数组旨在作为网格上函数的值。那么它如何返回一个数组呢?
  • 目前,您确实传递了一维数组,因此您看到的输出确实是沿该列的积分。你要构造的二维数组是什么?
  • W 不包含几列,我想最终通过梯形积分绘制 x1 和 x2 的傅立叶变换。
  • 纯粹出于好奇,您为什么同时定义Tt

标签: matlab


【解决方案1】:

如果我没听错,你需要 uv 成为矩阵。为此,您必须解决代码中的两个问题:

  1. ω⋅t 乘积应该是矩阵而不是向量。为此,您需要使用矩阵乘法W.' * t(注意添加的转置!)而不是逐元素乘法(.*)。这将生成转换所需的所有必要的ω⋅t 组合。

  2. 以类似的方式,您需要按列将x 乘以exp(-iωt)。使用bsxfun 而不是逐元素乘法,如下所示:

    u = bsxfun(@times, x1(:), exp(-i * W.' * t));
    

    这同样适用于v

由于您对uv 使用相同的exp(-i * W.' * t),我建议计算一次并将其存储在变量中:

E = exp(-i * W' * t);
u = bsxfun(@times, x1(:), E);
v = bsxfun(@times, x2(:), E);

在此修复之后,trapz 现在应该会产生所需的结果, X11X12 应该是分别应用于 x1x2 的傅里叶变换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    相关资源
    最近更新 更多