如何找到所选频率的相位角?
How can I find phase angle for chosen frequency?
我是 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,所以选择了附近的东西。
感谢您的帮助。
在图中,您将 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);
我是 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,所以选择了附近的东西。
感谢您的帮助。
在图中,您将 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);