0

フーリエ変換を行い、それを二乗してから、逆フーリエ変換を行うことにより、矩形パルスをそれ自体で畳み込もうとしています。conv() 関数があることはわかっていますが、将来のより複雑な問題のために周波数ドメインで実行することをお勧めします。私の問題は、これを行うと、期待どおりに三角関数が生成されないことです。私が使用しているコードは以下のとおりです。

clc

clear all

x=-5:.01:5;

y=rectangularPulse(x);

Y=fft(y);

H=Y.^2;

h=ifft(H);

plot(x,h)
4

1 に答える 1

2

畳み込みが線形であることを確認するには、ゼロパディングする必要があります。現在、循環畳み込みを実行しています。次のようなことを試してください:

y = ones(100,1);    
N = length(y);
Nfft = 2*length(y) - 1;

Y=fft(y,Nfft);
H=Y.^2;
h=ifft(H);
plot(h);
于 2014-10-23T23:00:56.750 に答える