我需要在不使用滤波器的情况下绘制零相位信号,但是我不明白我必须在代码中进行更正才能正确绘制它。
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)
答案 0 :(得分:0)
如果您将数字信号作为矢量,例如说signal
,则只需采取傅立叶变换的幅度即可将其相位设置为零:
new_signal = ifft(abs(fft(signal)));
new_signal
如果signal
也为实值,则应为实值。