如何找到所选频率的相位角?

时间:2016-02-18 13:34:01

标签: matlab frequency phase

我是matlab的新手,所以也许我的问题很愚蠢。我有两个信号rec(t)和sent(t),我想通过相位与频率实现从交叉谱中找到时间延迟。我通过rec(t)和sent(t)之间的交叉核心的FFT获得了交叉谱。这是:

time=data(15:length(data),1);                                               %time of measurement - s
sent=data(15:length(data),2);                                               %sent signal - mV
rec=data(15:length(data),3);                                                %recorded signal - mV
samples=length(time);                                                       %number of samples
Fs=samples/max(time);                                                       %sampling frequency - Hz
dt=max(time)/samples;                                                       %time interval - s
freq=(0:samples/2)/samples/dt;                                              %frequency scale for FFT
FFTrec=fft(rec);                                                            %FFT of recorded signal
FFTsent=fft(sent);                                                          %FFT of sent signal
CorrRecSent=(ifft(FFTrec.*conj(FFTsent)));                                  %cross correlation definition
CS=fft(CorrRecSent);                                                        %cross spectrum (CS)
amp=abs(CS);                                                                %amplitude of CS
amp1=amp(1:samples/2+1);                                                    %amplitude of CS for half of the frequency spectrum
A2=angle(CS);
A1=A2(1:samples/2+1);                                                       %phase angle of (CS)
A=unwrap(A1);                                                               %unwrapped phase
plot(freq,(A));
xlabel('frequency (Hz)')
ylabel('phase (rad)')

这是情节。是否有任何命令或程序如何获得给定频率的精确相位角(用黑线标记)?或者我怎样才能找到绘制的橙色线的斜率?我选择了这个频率范围,因为我发送的信号是5 kHz,所以选择了一些东西。

enter image description here

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在图中,您将freq设置为x轴向量,将A设置为y轴向量。

如果你想知道橙色线的斜率,你首先需要知道4000Hz和8000Hz的指数:

f1 = find(freq==4000);
f2 = find(freq==8000);

然后你可以检查这两点的哪个阶段:

p1 = A(f1);
p2 = A(f2);

最后斜率为deltaX / deltaY:

slope = (f2-f1)/(p2-p1);