|
我目前也在做加速度信号的频域积分运算
但是积分出来的数据与时域积分得到的数据差别好大呀,
看了好多次不知道那个地方出问题了
大家帮着看看,
谢谢了
clear
%close all
clc
format long
sf=300;%采样频率
%数据
f1=0.6;f2=1;f3=2;f4=3;
t=0:1/sf:(1024*3-1)/sf;
x=sin(f3*t)+sin(f1*t)+sin(f4*t);
%数据
%
%直接积分的关系式
yyy=-cos(f3*t)/f3-cos(f1*t)/f1-cos(f4*t)/f4+1/f3+1/f1+1/f4;
%
t1=1/sf;
%%%%%辛普森(simpson)算法时域积分求速度
yvs(1)=t1*(x(1)+x(2))/2;
n=length(t);
for k=2:n-1
yvs(k)=yvs(k-1)+t1*(x(k-1)+4*x(k)+x(k+1))/6;
end
yvs(n)=yvs(n-1);
%%%%%辛普森(simpson)算法时域积分求速度
%利用王济的程序
%%定义变量
%数据长度
n=length(x);
%时间向量
nfft=2^(nextpow2(n));
%建立时间向量
t=(0:1/sf:(n-1)/sf);
%最小截至频率
fmin=0.3;
fmax=8;
%FFT变换
y1=fft(x,nfft);
%yvp1=fft(ya,nfft);
%计算频率间隔
df=sf/nfft;
%四舍五入计算指定频带对应频率数组的下标
ni=round(fmin/df+1);
na=round(fmax/df+1);
%计算圆频率间隔
dw=2*pi*df;
%建立正的离散圆频率向量
w1=0:dw:2*pi*(0.5*sf-df);
%建立负的离散圆频率向量
w2=2*pi*(0.5*sf-df):-dw:0;
%将正负圆频率向量组合成一个向量
w=i*[w1,-w2];
%w=i*[w1,w2];
%以积分次数为指数,建立圆频率变量向量
it=1;
%w1=w';
%w2=w.^2';
w=w.^it;
b=zeros(1,nfft);
b(2:nfft-1)=y1(2:nfft-1)./w(2:nfft-1);
% if it==2
% y=-b;
% else
% myreal=imag(b);
% myimag=-real(b);
% y=myreal+i*myimag;
% end
a=zeros(1,nfft);
%
a(ni:na)=b(ni:na);
a(nfft-na+1:nfft-ni+1)=b(nfft-na+1:nfft-ni+1);
y2=ifft(a,nfft);
%y=real(y(1:n));
y3=real(y2(1:n));
figure
plot(t,yyy,'r');
hold on
plot(t,yvs,'b');
hold on
plot(t,y3)
xlabel('时间(s)');
ylabel('速度(m/s)');
legend('时域积分速度时程图','频域积分速度时程图');
title('频域一次积分后的速度时程曲线图形');
% xlabel('时间(s)');
% ylabel('位移(m)');
% %legend('频域积分位移','时域积分位移');
% title('频域两次积分后的位移时程曲线图形')
grid on |
|