📅  最后修改于: 2023-12-03 14:49:43.084000             🧑  作者: Mango
离散傅立叶变换(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
函数计算逆变换得到的结果是一个复数向量,其中实部表示原始信号,虚部一般为零。因此,在绘制时域图像时,需要同时绘制实部和虚部。