在MATLAB中用FFT把时域信号转化为频域信号

MATLAB实例

fe=12800;%采样频率
N=1280;%采样点数
dt=1/fe;%时间间隔
t=0:dt:(N-1)dt;
a=sin(2
pi960t)+sin(2pi1200t)+sin(2pi1040t);%信号
PH2=(fft(a)); %a为时域信,作fft变换

%下面为幅值修正
P2 = (PH2/N);
P1 = P2(1:N/2+1);%此时选取前半部分,因为fft之后为对称的双边谱
P1(2:end-1) = 2*P1(2:end-1);

%画图
f = fe*(0:(N/2))/N;
plot(f,abs(P1))
title(‘时域信号’)
xlabel(‘f (Hz)’)
ylabel(’|P1(f)|’)

对比时域信号图和频域信号图:
在这里插入图片描述

在这里插入图片描述

可以实现由时域信号转换为频域信号,频域图中峰值所在频率与程序中信号a中设置的一致。

方波信号可以表示为: $$u(t)=\sum_{n=1}^{\infty}\frac{4}{n\pi}\sin(n\omega_0t)$$ 其中,$\omega_0$为方波频率。 正矩形脉冲信号可以表示为: $$p(t)=\begin{cases} 1, & |t|\leq \frac{T}{2} \\ 0, & |t|>\frac{T}{2} \end{cases}$$ 其中,$T$为脉冲宽度。 负矩形脉冲信号可以表示为: $$n(t)=\begin{cases} 0, & |t|\leq \frac{T}{2} \\ 1, & |t|>\frac{T}{2} \end{cases}$$ 首先我们需要定义方波信号和时间序列: ```matlab % 定义方波信号 t=0:0.001:1; % 时间序列 u=zeros(size(t)); % 方波信号初始化 for n=1:2:99 % 只考虑奇数项 u=u+4./(n*pi)*sin(n*2*pi*t); % 求和 end % 绘制方波信号 plot(t,u) xlabel('时间/s') ylabel('幅值') title('方波信号') ``` 接下来实现时域转换,即将方波信号转换为正矩形脉冲信号和负矩形脉冲信号。我们可以使用卷积的方法实现,即将方波信号与矩形脉冲信号的卷积。这里我们以正矩形脉冲信号为例: ```matlab % 定义正矩形脉冲信号 T=0.2; % 脉冲宽度 p=zeros(size(t)); % 脉冲信号初始化 p(abs(t)<=T/2)=1; % 定义脉冲信号 % 绘制脉冲信号 figure plot(t,p) xlabel('时间/s') ylabel('幅值') title('正矩形脉冲信号') % 时域转换 up=conv(u,p,'same'); % 方波信号与正矩形脉冲信号卷积 % 绘制转换后的信号 figure plot(t,up) xlabel('时间/s') ylabel('幅值') title('方波信号向正矩形脉冲信号时域转变') ``` 频域转换可以使用傅里叶变换实现。我们先绘制方波信号和正矩形脉冲信号频谱图: ```matlab % 绘制频谱图 U=fft(u); % 方波信号的傅里叶变换 f=linspace(-500,500,length(t)); % 频率序列 P=fft(p); % 正矩形脉冲信号的傅里叶变换 % 绘制方波信号频谱图 figure plot(f,abs(fftshift(U))) xlabel('频率/Hz') ylabel('幅值') title('方波信号频谱图') % 绘制正矩形脉冲信号频谱图 figure plot(f,abs(fftshift(P))) xlabel('频率/Hz') ylabel('幅值') title('正矩形脉冲信号频谱图') ``` 然后我们对方波信号进行傅里叶变换,再将其乘以正矩形脉冲信号的频谱,最后进行反傅里叶变换即可得到转换后的信号: ```matlab % 频域转换 UP=U.*P; % 方波信号的频谱乘以正矩形脉冲信号的频谱 up=ifft(UP); % 反傅里叶变换 % 绘制转换后的信号 figure plot(t,real(up)) xlabel('时间/s') ylabel('幅值') title('方波信号向正矩形脉冲信号频域转变') ``` 同样的方法可以用于方波信号向负矩形脉冲信号时域转变和频域转变。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值