matlab生成的波形怎么进行fft分析
我放个《通信原理——基于matlab的计算机仿真》的例子,是对方波进行分析的。
以下是主函数:
%*********利用DFT计算信号的频谱并与信号的真实频谱的抽样比较*******************
%***********************方波的傅里叶变换************************************
clear all;
close all;
T = 1;
N_sample = 128;
dt = T/N_sample;
t = 0:dt:T - dt;
st = [ones(1,N_sample/2), -ones(1,N_sample/2)];%一个周期的方波
subplot(211);
plot(t,st);
axis([0 1 -2 2]);
xlabel('t');
ylabel('s(t)');
subplot(212);
[f,sf] = DFT_T2F(t,st);
plot(f,abs(sf));
hold on;
axis([-10 10 0 1]);
xlabel('f');
ylabel('|S(f)|');
%根据傅里叶变换计算得到的信号频谱相应的位置的抽样值
sff = T^2*1i*pi*f*0.5.*exp(-1i*2*pi*f*T).*sinc(f*T*0.5).*sinc(f*T*0.5);
plot(f,abs(sff),'r--')
以下是子函数:
%使用FFT函数计算信号的傅里叶变换
function [f,sf] = DFT_T2F(t,st)
%输入:时间,信号向量;时间长度必须大于2
%输出:频率,信号频谱
dt = t(2) - t(1);
T = t(end);
df = 1/T;
N = length(st);
f = -N/2*df:df:N/2*df-df;
sf = fft(st);
sf = T/N*fftshift(sf);
2024-10-13 广告