声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1246|回复: 1

[FFT] 求助!FFT比值校正方法数据的处理

[复制链接]
发表于 2009-1-11 13:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本人编写了一个MATLAB频谱校正的程序,信号有两个频率,但是两个频率下幅值和相位为多组,我要求的是将一个频率下的所有幅值和所有相位分别放在一个矩阵里,该如何处理,循环的单个程序已经运行出来。我的信号为
fs=5120;
N=1024;
t=(0:N-1)/fs;
A1=[5 10 6 8 1 3];A2=[1.5 9 4.6 8.5 7.5 6.1];theta1=[10 20 30 40 50 60];theta2=[70 80 90 100 110 120];
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对应

SpectrumCorrect.m

1.27 KB, 下载次数: 11

函数文件

pinpujiaozheng.m

761 Bytes, 下载次数: 13

主文件

回复
分享到:

使用道具 举报

发表于 2009-1-11 15:35 | 显示全部楼层
本帖最后由 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=[5 10 6 8 1 3];A2=[1.5 9 4.6 8.5 7.5 6.1];theta1=[10 20 30 40 50 60];theta2=[70 80 90 100 110 120];
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;
%[frequency,amplitude,theta]=SpectrumCorrect(xf,2,1);
w=hann(N,'periodic');
xfw=fft(z.*w');
xfw=xfw(1:N/2)/N*4;
[frequency,amplitude,theta]=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
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-7 04:04 , Processed in 0.210808 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表