% 下面的程序里Pn 存的就是基波相位 如果求的是谐波相位,稍微修改即可
x = load('datadat'); %load 数据
fs=10000; % 采样频率,自己根据实际情况设置
N=length(x); % x 是待分析的数据
n=1:N;
%1-FFT
X=fft(x); % FFT
X=X(1:N/2);
Xabs=abs(X);
Xabs(1) = 0; %直流分量置0
[Amax,index]=max(Xabs);
if(Xabs(index-1) > Xabs(index+1))
a1 = Xabs(index-1) / Xabs(index);
r1 = 1/(1+a1);
k01 = index -1;
else
a1 = Xabs(index) / Xabs(index+1);
r1 = 1/(1+a1);
k01 = index;
end
Fn = (k01+r1-1)fs/N; %基波频率
An = 2pir1Xabs(k01)/(Nsin(r1pi)); %基波幅值
Pn = phase(X(k01))-pir1; %基波相位 单位弧度
Pn = mod(Pn(1),pi);
使用
在STM32中对信号进行FFT运算首先需要在程序文件中添加DSP库并将其文件夹加入程序中其中包括头文件与arm_cortexM4lf_mathlib在keil中需要进行如下 *** 作。
以上就是关于FFT测量相位具体算法。在matlab中如何使用进行编程全部的内容,包括:FFT测量相位具体算法。在matlab中如何使用进行编程、stm32g474使用fft、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)