绘制零相位信号

时间:2019-02-20 12:48:25

标签: matlab plot signals

我需要在不使用滤波器的情况下绘制零相位信号,但是我不明白我必须在代码中进行更正才能正确绘制它。

我希望得到这个: image

f1=20;
f2=100;
df=f2-f1; 
dt=0.002; 
T=4; 
handles.t=0:dt:T-dt; 
handles.s=sin(2.*pi.*handles.t.*(f1+(df/((T-dt)*2).*handles.t)));
handles.phase=angle(fft(handles.s));
handles.uphase =unwrap(handles.phase);
for k=1:1:length(handles.t)
 handles.zero(k)=abs(handles.s(k)).*cos(handles.uphase (k))+abs(handles.s(k)).*j.*sin(handles.uphase (k));
end 
handles.zero=real(ifft(handles.zero));
figure
plot(handles.t,handles.zero)

1 个答案:

答案 0 :(得分:0)

如果您将数字信号作为矢量,例如说signal,则只需采取傅立叶变换的幅度即可将其相位设置为零:

new_signal = ifft(abs(fft(signal)));

new_signal如果signal也为实值,则应为实值。