0

数値の配列があり、配列の各列を個別に統合し、最終的に統合後に数値の配列を取得したいと考えています。

「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);

前もって感謝します。

4

1 に答える 1

1

私があなたを正しくフォローしているなら、あなたは行列である必要がuあります。vそのためには、コード内の 2 つの問題を解決する必要があります。

  1. ω⋅t積はベクトルではなく行列である必要があります。そのためには、W.' * t要素ごとの乗算 ( .*) ではなく、行列の乗算 (追加された転置に注意してください!) を使用する必要があります。ω⋅tこれにより、変換に必要なすべての必要な組み合わせが生成されます。

  2. 同様に、列ごとに乗算xする必要があります。次のように、要素ごとの乗算の代わりにexp(-iωt)使用します。bsxfun

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

    についても同様ですv

forと forのexp(-i * W.' * t)両方で同じものを使用しているため、一度計算して変数に格納することをお勧めします。uv

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

この修正に続いて、trapz現在、目的の結果が得られるはずです。つまり X11X12実際にはx1x2にそれぞれフーリエ変換が適用されているはずです。

于 2013-01-07T09:02:10.080 に答える