【问题标题】:Plotting zero phase signal绘制零相位信号
【发布时间】:2019-02-21 01:51:47
【问题描述】:

我需要在不使用 filter 的情况下绘制零相位信号,但我不明白我必须在代码中纠正什么才能正确绘制它。

我希望得到这个:

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#2)发布此内容。请停止删除并重新提出相同的问题。
  • 不要发布重复的问题。编辑您的原始问题以包含所有详细信息。
  • 绘制零相位信号?你的意思是你需要将信号的相位设置为零?这相当于取傅里叶变换的绝对值,然后像你在这里做的那样进行逆变换。不过,我不确定这是否是您真正想要的。
  • @CrisLuengo “您的意思是您需要将信号的相位设置为零吗?”对了,你能帮我做吗?

标签: matlab plot signals


【解决方案1】:

如果你有一个数字信号作为矢量,比如signal,那么你可以简单地通过傅里叶变换的幅度将其相位设置为零:

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

如果signal 也是实值,那么这里的new_signal 也应该是实值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2021-05-30
    相关资源
    最近更新 更多