gongzuobiji 发表于 2010-8-15 17:06

deltf=1/(1+A(k)/A(k-1));为什么这么算呢

ximeiji 发表于 2011-5-11 22:05

Y=y(1:N/2)/N*2;
这句是什么意思啊?

lragy 发表于 2011-5-15 09:41

多谢分享!!!!!!!!!!!

shajue 发表于 2011-8-11 21:28

回复 6 # zhwang554 的帖子

您这段程序看上去没什么问题,是不是可看做采样率是1Hz,实际使用过程中采样率不一样。如果我将此程序加上采样率,现在设置为fs=2Hz,得出的结果也就不对了,为什么呢?是我使用错了吗?
close all;clc;clear all;
N=1024;
fs=2;
w=2*pi;
% t=(0:2*N-2)/fs;
t=(-N+1:N-1)/fs;
y=1.0*exp(j*(w*t*49.1/N+50.0*pi/180))+0.8*exp(j*(w*t*149.2/N+100*pi/180))+0.6*exp(j*(w*t*249.3/N+150*pi/180))+0.4*exp(j*(w*t*349.4/N+200*pi/180))+0.2*exp(j*(w*t*449.5/N+250*pi/180));
y1 = y(N:end);
win =hanning(N)';;
win1 = win/sum(win);
y11= y1.*win1;
y11_fft = fft(y11,N);
a1 = abs(y11_fft);
p1 = mod(phase(y11_fft)*180/pi,360);
y2 = y(1:2*N-1);
win =hanning(N)';;
winn =conv(win,win);%apFFT须要卷积窗
win2 = winn/sum(winn);
y22= y2.*win2;
y222=y22(N:end)+;%构成长N的apFFT输入数据
y2_fft = fft(y222,N);
a2 = abs(y2_fft);
p2=mod( phase(y2_fft)*180/pi,360);
      ee=(p1-p2)/180/(1-1/N);
      aa=(a1.^2)./a2;
subplot(4,1,1),stem(a2,'.');title('apFFT振幅谱');ylim();xlim();grid
subplot(4,1,2),stem(p2,'.');title('初相位校正谱');ylim();xlim();grid
subplot(4,1,3);stem(ee,'.');title('频率校正谱');ylim([-1,1]);xlim();grid
subplot(4,1,4);stem(aa,'.');title('振幅校正谱');ylim();xlim();grid
      disp('相位校正值')
   p2(50:100:450)
      disp('频率校正值')
    ee(50:100:450)+(49:100:450)
      disp('振幅校正值')
      aa(50:100:450)

相位校正值
ans =
   66.6762161.6313249.8269234.3468245.5667
频率校正值
ans =
   49.2541149.4448247.7433349.6674447.6453
振幅校正值
ans =
    0.4387    0.3441    0.2137    0.3907    0.6415

ab77977 发表于 2011-12-6 19:27

回复 1 # zhaoyixu 的帖子

若被分析信号是谐波信号,不是由单一频率组成,那么你这种方法就不能对多个频率进行校正,那请问你有什么其他好的办法吗?

ab77977 发表于 2011-12-6 19:29

还有就是hamming窗又怎么编程?

ab77977 发表于 2011-12-10 09:31

这种方法只是对单频率信号而言,若是多频率信号了?

yangzj 发表于 2011-12-11 10:51

若是间隔不是很密集的多个频率成分,可忽略掉相互之间的干涉,分别进行校正。

squirrel2012 发表于 2012-3-15 10:30

Thank you very much!!!!

wangze2008scu 发表于 2012-6-1 23:10

回复 19 # shajue 的帖子

不是采样频率fs=2Hz,而是fs=1024Hz,此时频率分辨率为1Hz
页: 1 [2]
查看完整版本: 学写程序-比值校正法