将fft应用于goertzel算法

3次浏览(过去30天)
DZ
DZ 2021年8月28日
我想做的是使用FFT和Goertzel算法来找到两个sin信号之间的相位差。我相信我的代码可以很好地运行FFT。它可以输出正确的相位差值,但是Goertzel算法不能输出预期的结果。根据我的理解,Goertzel算法和ffi的区别在于Goertzel算法有一个感兴趣的区域。我不知道为什么当我在用Goertzel算法时,每个sin函数只有一个值。结果截图和代码如下所示。
清晰;
clc;
F = 10000;
P = 1 * pi;
T = linspace(0,10 *pi, 100000);
S = [sin(2*pi*f*t);Sin (2*pi*f*t + p)]';%设置信号
Ts = mean(diff(t));
Fs = 1/Ts;
Fn = Fs/2;
% FTS = fft(s)/length(t);%进行变换
Indxs = find(f>=9500 & f<=10500);
FTS = goertzel(s, indxs);
Fv = linspace(0,1, fix(length(t)/2)+1)*Fn;
Iv = 1:长度(Fv);
[pk,ix] = max(abs(fts(Iv,:)));
Phsmin = [min(角度(fts(ix(1),:)));马克斯(角(fts(九(2):))));
Phsdif = diff(phsmin);计算相位差
PhaseDiff = sprintf('相位差= %。3f rad', phsdif)

答案(0)

下载188bet金宝搏


释放

R2020a

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!

翻译的