Matlab trapz积分
我有一个数字数组,我想对数组中的每一列分别进行积分,最后在积分后得到一个数字数组 我尝试了“trapz”函数,但我得到了一个值,我怎么能做我想做的呢 这是我的密码:Matlab trapz积分,matlab,Matlab,我有一个数字数组,我想对数组中的每一列分别进行积分,最后在积分后得到一个数字数组 我尝试了“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= t
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);
提前谢谢。如果我没听错,你需要
u
和v
作为矩阵。为此,您必须解决代码中的两个问题:
ω⋅t
乘积应该是矩阵而不是向量。为此,您需要使用矩阵乘法W.*t
(注意添加的转置!),而不是元素乘法(*
)。这将产生ω的所有必要组合⋅t变换所需的
x
乘以exp(-iωt)
列。使用bsxfun
而不是按元素乘法,如下所示:
u = bsxfun(@times, x1(:), exp(-i * W.' * t));
这同样适用于v
u
和v
使用相同的exp(-i*W.*t)
,我建议计算一次并将其存储在变量中:
E = exp(-i * W' * t);
u = bsxfun(@times, x1(:), E);
v = bsxfun(@times, x2(:), E);
在此修复之后,
trapz
现在应该产生所需的结果,即X11
和X12
应该分别是应用于x1
和x2
的傅里叶变换 是我弄错了,还是你给了trapz一个1D数组,它是网格上函数的值。因此,它如何返回一个数组呢?目前,您确实在传递一个1D数组,因此您看到的输出实际上是该列上的整数。你想要构建的2D数组是什么?W不包含几列,我想最终通过梯形积分绘制x1和x2的傅里叶变换。出于好奇,你为什么同时定义t
和t
?