该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
已知冲击响应,要画传递函数的相频响应,先后分别使用 fft、freqz、bode函数,发现fft和freqz的趋势是一样的,但是角度数值不同。而bode的趋势则和fft、freqz都不同。代码如下,SP1是函数的冲击响应,采样率4800。
多谢各位啦! ^___^
%% 用 fft 函数
H_complex_two = fft(SP1,4800);
H_complex = H_complex_two(1:end/2);
F = 1:2400;
H_angle = unwrap(angle(H_complex))/pi*180; % Degree
figure;plot(F,H_angle)
axis([20,150,-900,-100]);
grid on
ylabel('Phase (Degree)');title('FFT');
xlabel('Frequency (Hz)');
%% 用 freqz
[H,W] = freqz(SP1,1,4800);
W = W/pi*2400;
Ha = unwrap(angle(H))/pi*180;
figure;plot(W,Ha)
axis([20,150,-1600,-800]);grid on
xlabel('Frequency (Hz)');ylabel('Phase (Degree)');title('freqz')
%% 用 bode
htf = tf(SP1.',1,1/4800);
Wtf = 2*pi*(1:2400); % 幅频响应和相频响应分析频率(rad/sec)
[Htf_Mag,Htf_Phase_temp] = bode(htf,Wtf); % 原次级通道频响
Htf_Phase = zeros(1,2400);
for j = 1:2400
Htf_Phase(j) = Htf_Phase_temp(1,1,j);
end
Htf_Phase = unwrap(Htf_Phase);
figure;plot(Wtf/2/pi,Htf_Phase,'k');
axis([20,150,-30,40]);grid on;
xlabel('Frquency (Hz)');ylabel('Phase (Degree)');title('bode');