求助!FFT比值校正方法数据的处理
本人编写了一个MATLAB频谱校正的程序,信号有两个频率,但是两个频率下幅值和相位为多组,我要求的是将一个频率下的所有幅值和所有相位分别放在一个矩阵里,该如何处理,循环的单个程序已经运行出来。我的信号为fs=5120;
N=1024;
t=(0:N-1)/fs;
A1=;A2=;theta1=;theta2=;
for i=1:6
s=A1(i)*cos(2*pi*250.658*t+theta1(i)*pi/180)+A2(i)*cos(2*pi*600.52*t+theta2(i)*pi/180);
我的幽囚就是频谱校正后,诊断的结果A11、A22为诊断结果,和A1和A2对应 本帖最后由 wdhd 于 2016-9-13 14:24 编辑
原帖由 S0704082 于 2009-1-11 13:42 发表
本人编写了一个MATLAB频谱校正的程序,信号有两个频率,但是两个频率下幅值和相位为多组,我要求的是将一个频率下的所有幅值和所有相位分别放在一个矩阵里,该如何处理,循环的单个程序已经运行出来。我的信号为
fs ...
程序如下,250和600两个频率的参数分别放在AA和BB两个矩阵中:
fs=5120;
N=1024;
t=(0:N-1)/fs;
A1=;A2=;theta1=;theta2=;
for i=1:6
s=A1(i)*cos(2*pi*250.658*t+theta1(i)*pi/180)+A2(i)*cos(2*pi*600.52*t+theta2(i)*pi/180);
aa=s;%(cos(2*pi*502.5*t+100*pi/180)+cos(2*pi*997*t+110*pi/180)+cos(2*pi*2001*t+120*pi/180));%+cos(2*pi*200.3*t+40*pi/180)+cos(2*pi*480.4*t+50*pi/180);
x=randn(1,N);
x=x/std(x);
x=x-mean(x);
a=0; %均值
b=0; %方差
y=a+sqrt(b)*x;%产生均值零,方差为1的高斯噪声
z=aa+y;
%xf=fft(z);
%xf=xf(1:N/2)/N*2;
%=SpectrumCorrect(xf,2,1);
w=hann(N,'periodic');
xfw=fft(z.*w');
xfw=xfw(1:N/2)/N*4;
=SpectrumCorrect(xfw,2,2);
ff1=fix(frequency(1));
if ff1==250
AA(i,1)=amplitude(1); AA(i,2)=theta(1);
BB(i,1)=amplitude(2); BB(i,2)=theta(2);
else
AA(i,1)=amplitude(2); AA(i,2)=theta(2);
BB(i,1)=amplitude(1); BB(i,2)=theta(1);
end
end
页:
[1]