声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2470|回复: 7

[FFT] 王济 一书中 频域积分中的一个小问题

[复制链接]
发表于 2010-4-27 16:13 | 显示全部楼层 |阅读模式

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

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

x
clear; close all; clc
sf=300; f1=6;f2=10;f3=20;f4=30;
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)算法时域积分求速度
figure
subplot 211; title('实际信号输入信号'); plot(t,x)
subplot 212; plot(t,yvs); hold on; plot(t,yyy,'r'); title('时域积分与实际积分信号')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
nfft=n; c=1;
fmin=0;%最小截止频率
fmax=150;%最大截止频率
it=1;%积分次数
y=fft(x,nfft); %FFT变换
df=sf/nfft;%计算频率间隔(Hz/s)
ni=round(fmin/df+1); na=round(fmax/df+1); %计算指定频带对应频率数组的下标
dw=2*pi*df; %计算圆频率间隔(rad/s)
w1=0:dw:2*pi*0.5*sf;%建立正的离散圆频率向量
w2=-2*pi*(0.5*sf-df):dw:-dw;%建立负的离散圆频率向量
w=[w1,w2];%将正负圆频率向量组合成一个向量
w=w.^i; %以积分次数为指数,建立圆频率变量向量
%进行积分的频域变换
a=zeros(1,nfft); a(2:nfft-1) =y(2:nfft-1)./w(2:nfft-1);
if it == 2
   y=-a; %进行二次积分的相位变换
else
%进行一次积分的相位变换
a1=imag(a); a2=real(a); y=a1-a2*i;
end
a=zeros(1,nfft);
a(ni:na)=y(ni:na);%消除指定正频带外的频率成分
a(nfft-na+1:nfft-ni+1)=y(nfft-na+1:nfft-ni+1); %消除指定负频带外的频率成分
y=ifft(a,nfft); %IFFT变换
y=real(y(1:n))*c; %取逆变换的实部n个元素并乘以单位变换系数为积分结果
%绘制积分前的时程曲线图形
figure
subplot(2,1,1); plot(t,x); title('实际时程信号'); grid on;
%绘制积分后的时程曲线图形
subplot(2,1,2); plot(t,y); hold on; plot(t,yyy,'r'); hold on; plot(t,yvs,'y')
legend('频域积分','实际积分','时域积分'); title('频域积分、时域积分与实际积分信号')
grid on;




大家好,请问下,在上述程序中,红线部分,数组下标从(2:nfft -1)是什么意思呢?代表什么物理意义?
恳请高手解答之~谢谢~

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2010-5-16 18:46 | 显示全部楼层
由位移求一阶导数便得到速度,假设位移为一个三次多项式,那么他的速度便是二次多项式,也就是求一次导数,少一个数,求积分恰好相反。由加速度求位移需要积分两次,也就是加速度要比位移的积分少两个数
发表于 2010-5-16 18:47 | 显示全部楼层
不知道是否能这样解答,还请高手回答

评分

1

查看全部评分

发表于 2010-5-16 21:27 | 显示全部楼层
w=w.^i; %以积分次数为指数,建立圆频率变量向量
=>
w=w.^it; %以积分次数为指数,建立圆频率变量向量

Ref http://forum.vibunion.com/forum/viewthread.php?tid=47704

从2开始猜测为避跳掉w(1)=0! 同待高人路过

[ 本帖最后由 ChaChing 于 2010-5-16 21:45 编辑 ]
发表于 2010-5-17 14:55 | 显示全部楼层
a(1)是零频,零频是不能积分的,所以积分频率从w(2:nfft -1)开始。其次频域积分的公式是:幅值/(2*pi*f),也就是红线中的y(2:nfft-1)./w(2:nfft-1);
 楼主| 发表于 2010-6-5 20:04 | 显示全部楼层

回复 地板 ChaChing 的帖子

谢谢您的回复

w(1)=0,所以从下标2开始

可为什么w(nfft),也就是w(end)不取呢

诚请高手解答之~
发表于 2010-6-9 18:01 | 显示全部楼层

回复 楼主 zhaoch 的帖子

也太复杂了吧
发表于 2013-9-6 19:49 | 显示全部楼层

w2=2*pi*(0.5*sf-df):-dw:0;
w2=-2*pi*(0.5*sf-df):dw:-dw;
这两个积分出来结果一样,而我不理解为什么你要改成负频率?一组向量做完FFT之后的结果是关于sf/2对称的,那么王济的程序就没有问题呀。我是这么理解的。我不知道哪个对,所以请教你。谢谢了。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-21 08:12 , Processed in 0.058014 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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