📜  使用 MATLAB 进行离散傅立叶变换及其逆变换(1)

📅  最后修改于: 2023-12-03 14:49:43.084000             🧑  作者: Mango

使用 MATLAB 进行离散傅立叶变换及其逆变换

离散傅立叶变换(Discrete Fourier Transform,DFT)是将一个信号从时域转换到频域的一种方法,可以提取信号的频域信息。在 MATLAB 中,可以使用 fft 函数进行离散傅立叶变换,使用 ifft 函数进行离散傅立叶逆变换。

离散傅立叶变换

使用 fft 函数进行离散傅立叶变换的语法为:

Y = fft(X)

其中,X 是输入信号,可以是一个向量或矩阵;Y 是输出信号,与输入信号的维度相同。

下面是一个简单的例子:

% 定义信号 x(t)
t = 0:0.01:1;
x = sin(2*pi*10*t) + sin(2*pi*20*t) + sin(2*pi*30*t);

% 进行离散傅立叶变换
y = fft(x);

% 绘制频域图像
Fs = 1 / (t(2)-t(1));        % 计算采样频率
f = (0:length(y)-1)*Fs/length(y);
figure;
plot(f,abs(y));              % 绘制振幅谱
xlabel('频率 (Hz)');
ylabel('振幅');

上述代码首先定义了一个信号 x(t),然后使用 fft 函数计算该信号的离散傅立叶变换 y,最后绘制了该信号的频域图像。

离散傅立叶逆变换

使用 ifft 函数进行离散傅立叶逆变换的语法为:

X = ifft(Y)

其中,Y 是输入信号,可以是一个向量或矩阵;X 是输出信号,与输入信号的维度相同。

下面是一个简单的例子:

% 定义信号 x(t)
t = 0:0.01:1;
x = sin(2*pi*10*t) + sin(2*pi*20*t) + sin(2*pi*30*t);

% 进行离散傅立叶变换
y = fft(x);

% 进行离散傅立叶逆变换
x_r = ifft(y);

% 绘制时域图像
figure;
plot(t,x,'k--');
hold on;
plot(t,real(x_r),'r');      % 绘制实部
plot(t,imag(x_r),'b');      % 绘制虚部
xlabel('时间 (s)');
ylabel('幅度');
legend('原始信号','实部','虚部');

上述代码首先定义了一个信号 x(t),然后使用 fft 函数计算该信号的离散傅立叶变换 y,接着使用 ifft 函数计算该信号的离散傅立叶逆变换 x_r,最后绘制了该信号的时域图像。

需要注意的是,使用 ifft 函数计算逆变换得到的结果是一个复数向量,其中实部表示原始信号,虚部一般为零。因此,在绘制时域图像时,需要同时绘制实部和虚部。