作业帮 > 综合 > 作业

将一个离散时间信号进行傅立叶变换,怎样用MATLAB求该傅立叶变换中包含的频率值?

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/20 09:39:44
将一个离散时间信号进行傅立叶变换,怎样用MATLAB求该傅立叶变换中包含的频率值?
实际上将这个离散时间信号用origin进行傅立叶变换后可以得到频率,但不知它的原理
将一个离散时间信号进行傅立叶变换,怎样用MATLAB求该傅立叶变换中包含的频率值?
基本思路是用fft做傅立叶变换,然后画出频谱图,其中的极值处就是频率值.比如下面这个例子,一个22hz的信号.
%generate the time index
sampling_rate = 100;
t1 = 0:1/sampling_rate:3-1/sampling_rate;
t2 = 3+1/sampling_rate:1/sampling_rate:6;
t = [t1 t2];
%determine the frequency of the input signal
F1 = 2;
F2 = 8;
temp1 = sin(2*F1*pi*t1);
temp2 = sin(2*F2*pi*t2);
%generate the signals
x1 = [temp1 temp2];
%apply the FFT transform on the input signals
y1 = fft(x1);
%plot the input signal
plot(t, x1); grid on; xlabel('time (seconds)'); ylabel('Magnitude');
%generate the frequency index
f = (0:length(y1)-1)'*sampling_rate/length(y1);
%plot the frequency components of the input signal
plot(f(1:length(f)/2), abs(y1(1:length(y1)/2)));
xlabel('Frequency (Hz)'); ylabel('Abs. Magnitude'); grid on;