声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3498|回复: 26

[FFT] 能否求某一曲线的功率谱?

[复制链接]
发表于 2017-5-28 10:02 | 显示全部楼层 |阅读模式

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

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

x
对于某一信号我们可以求它的功率谱密度,但是对于某一曲线(由多项式表示如y=x.^3+x.^2+x)能否求其功率谱密度呢?尝试采用对信号进行功率谱估计得方法来求这一曲线的功率谱,发现得到的结果很奇怪:除了横坐标(表示频率)为0的时候纵坐标不等于零之外,其他横坐标对应的纵坐标的值全部为零。另外,用相同的方法得到的某一波浪状的曲线的功率谱的结果也是一样的,不知为何,请大神指点,感激不尽!
回复
分享到:

使用道具 举报

发表于 2017-5-28 12:04 | 显示全部楼层
楼主用什么程序分析。数据如何选取?
 楼主| 发表于 2017-5-28 20:52 | 显示全部楼层
wanyeqing2003 发表于 2017-5-28 12:04
楼主用什么程序分析。数据如何选取?

各种方法都试过了,包括直接法、间接法、改进的直接法还有AR模型,结果都很奇怪。以直接法为例,程序如下:
x=0:0.001:0.13;
y=(0.0012*(x*100).^4-0.00849472*(x*100).^3-0.03144991*(x*100).^2+0.58530388*(x*100))/100;
figure(1)
subplot(211)
plot(x,y);
title('曲线')
nfft=1024;
Fs=1000;
window=boxcar(length(y));
[Pxx,f]=periodogram(y,window,nfft,Fs);
subplot(212)
plot(f,Pxx);
title('曲线的功率谱')

程序中y=f(x)就是曲线的多项式表达,相当于将曲线的函数表达式代替了信号,不知道这种方法是否有问题,请指教!
发表于 2017-5-28 21:35 | 显示全部楼层
brimel 发表于 2017-5-28 20:52
各种方法都试过了,包括直接法、间接法、改进的直接法还有AR模型,结果都很奇怪。以直接法为例,程序如下 ...

您是否用的是matlab。
是否需要先将函数离散化,变成数组后再做频谱分析。
matlab我不是太熟悉。请高手指导一下。
发表于 2017-5-28 21:36 | 显示全部楼层
请注意,功率谱密度是定义在一个稳态随机过程里,你却要求一个曲线的功率谱密度!为什么?
 楼主| 发表于 2017-5-28 22:00 | 显示全部楼层
hcharlie 发表于 2017-5-28 21:36
请注意,功率谱密度是定义在一个稳态随机过程里,你却要求一个曲线的功率谱密度!为什么?

我是想分析一条曲线或者这条曲线的曲率曲线所蕴藏的频率信息,比如如果一条曲线或者它的曲率曲线近似于正弦或者余弦,那么通过分析其功率谱就可以知道它的频率成分。请问这样做可以吗?
 楼主| 发表于 2017-5-28 22:04 | 显示全部楼层
wanyeqing2003 发表于 2017-5-28 21:35
您是否用的是matlab。
是否需要先将函数离散化,变成数组后再做频谱分析。
matlab我不是太熟悉。请高手 ...

我也想过将数据离散化,但是离散化的这些数据也还是从曲线的函数表达式里得到的,所以就直接将函数表达式当成信号,也不知道这样对不对
发表于 2017-5-28 22:57 | 显示全部楼层
brimel 发表于 2017-5-28 22:04
我也想过将数据离散化,但是离散化的这些数据也还是从曲线的函数表达式里得到的,所以就直接将函数表达式 ...

不形成数组如何做FFT。
你定义了1024个点。如果只给一个数,余下是否都为零或常数?
请再试试。
发表于 2017-5-29 06:46 | 显示全部楼层
你这个分析物理意义很牵强吧,上面hcharlie主任都提了,该方法前提是稳态过程,x的三次方不收敛的,而且无明显周期性,峰值应该非常小
 楼主| 发表于 2017-5-29 09:31 | 显示全部楼层
wanyeqing2003 发表于 2017-5-28 22:57
不形成数组如何做FFT。
你定义了1024个点。如果只给一个数,余下是否都为零或常数?
请再试试。

谢谢指导,我将数据离散化之后再试试
 楼主| 发表于 2017-5-29 09:32 | 显示全部楼层
yelv123 发表于 2017-5-29 06:46
你这个分析物理意义很牵强吧,上面hcharlie主任都提了,该方法前提是稳态过程,x的三次方不收敛的,而且无 ...

谢谢,我先将数据离散化后再试试看
发表于 2017-5-30 07:30 | 显示全部楼层
我不赞成做这样的事。
数学的精髓是什么?精确!
要做到精确,必须满足各种数学方法的条件和适用范围。
所谓频谱分析数学上两种方法,FFT和功率谱,实际功率谱法也是基于FFT法。
我说过功率谱密度只是在稳态随机信号有定义,而且是无限长才能算得其精确值。
傅里叶分析也是对无限长信号的方法,FFT是对有限长数据的,所以就有限制,要求是对无穷长的周期函数截取一段整数周期的采样,这样的计算才是精确的。
以上是理想情况。
在工程中稳态随机用PSD法,比如随机振动试验控制;而接近于周期函数用FFT法,比如测量机器的振动,也要尽量取整数周期,否则要用什么加窗法来减小误差。
而你现在是想取有限长的任意函数做频谱分析,这不在PSD或FFT法的范围之内,得不到精确结果的。
如果不是精确的结果,即使算出来其可信度是值得怀疑的。
发表于 2017-5-31 08:17 | 显示全部楼层
一条曲线的频谱分析有何意义?
 楼主| 发表于 2017-5-31 08:45 | 显示全部楼层
本帖最后由 brimel 于 2017-5-31 15:58 编辑
hcharlie 发表于 2017-5-30 07:30
我不赞成做这样的事。
数学的精髓是什么?精确!
要做到精确,必须满足各种数学方法的条件和适用范围。

谢谢老师的指点!我理解的就是说只有稳态随机过程、无限时长,有一定周期性(至少截取一个周期长度),求其功率谱或者FFT才比较有意义是吗?我尝试对一近似周期的曲线做了FFT,麻烦老师帮忙看一下有没有问题,非常感谢
syms t;
x=(0.0012*(t*13).^4-0.00849472*(t*13).^3-0.03144991*(t*13).^2+0.58530388*(t*13))/13;%曲线方程
y1=diff(x,t);
y2=diff(y1,t);
r=y2/(1+y1^2)^(3/2);%求曲线的曲率
xx=0:0.001:1;
rr=zeros(size(xx));
for i=1:length(xx)
rr(i)=abs(subs(r,t,xx(i)));
end
figure(1)
subplot(211)
plot(xx,rr);
title('曲线的曲率')
h=0.001;
t=0:h:1;
X=fft(rr);
f=t/h;
subplot(212)
plot(f(1:floor(length(f)/2)),abs(X(1:floor(length(f)/2))));%曲率的频谱图

 楼主| 发表于 2017-5-31 08:49 | 显示全部楼层
mni987654321 发表于 2017-5-31 08:17
一条曲线的频谱分析有何意义?

与信号的频谱分析类似,在时域内无法直观表现出来的东西,在转化为频域后就一目了然了。我的目的是将一条曲线当成一个信号,通过求其功率谱或者FFT,看能否提取出该曲线波动的频率
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-28 12:05 , Processed in 0.160556 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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