24小时热门版块排行榜    

查看: 6524  |  回复: 12
本帖产生 1 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

whfire

金虫 (正式写手)

[求助] matlab 傅里叶变换 频谱分析

我想利用matlab进行编程,进行傅里叶频谱分析,但是需要将频谱转换成功

率谱。详情见附件
回复此楼

» 收录本帖的淘帖专辑推荐

matlab 频谱

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

独孤_逍遥

铁虫 (初入文坛)

送红花一朵
引用回帖:
3楼: Originally posted by sudo at 2011-07-25 20:44:28
对了,还有一些想补充的~

首先就是直流分量的问题,如果不先对数据都减去一个均值,那么接近0Hz部分的功率会非常非常大~这是有害的,一般做数据处理的时候如果只关注交流量的话,就要先使得整个序列的均值为0,方 ...

sudo是大神啊,直流分量和交流量的问题真是让我茅塞顿开啊!!
我不是学信号处理的,所以国外文献给出的结果跟我算出来的死活不对,原来他们都做的是交流量的处理,都减了一个平均值。
8楼2014-02-28 16:18:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 13 个回答

sudo

木虫 (正式写手)


dubo(金币+1): 欢迎常来程序语言版讨论 2011-07-31 14:25:14
唉,可能解释起来一言难尽~建议楼主阅读一下信号处理的入门书嗯

首先,你师兄的图,应该是降采样过后的(或者是后来截取了一段,不过我倾向于认为是降采样),也就是说他用来做功率谱的数据采样率只有400Hz,你给的数据的采样率是2000Hz

其次,你师兄给的图是没有取dB作为纵坐标单位的,也就是没有计算10*log10(P),而是直接用“功率密度”来做纵坐标~

最后,其实MATLAB有现成函数可以做功率谱:
CODE:
[P,F]=periodogram(x, window, nfft, Fs)

其中输出P和F分别是功率谱和对应的频率
输入x是信号,window是数据窗口(可以写[]用默认矩形窗),nfft是进行fft变换的点数(可以写[]取默认值,一般会取到最近的2的整数次幂左右的地方),Fs是采样率,单位是Hz

然后我对你的数据裸进行功率谱处理的话,结果如下图:
2楼2011-07-25 20:28:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

【答案】应助回帖

whfire(金币+20): 哥们,谢谢。太谢谢了 2011-07-27 09:13:49
对了,还有一些想补充的~

首先就是直流分量的问题,如果不先对数据都减去一个均值,那么接近0Hz部分的功率会非常非常大~这是有害的,一般做数据处理的时候如果只关注交流量的话,就要先使得整个序列的均值为0,方法就是给每个数减去该序列的一个均值

然后就是降采样的方法,其实很简单啦,在MATLAB里面的话,如果y是你原来的数据的话(注意是测量数据,你给的数据的第2列).....还是给出命令的全部吧:
CODE:
ty = y(1:5:end); %将原来2000Hz的数据降采样到400Hz
ty = ty - mean(ty); %减去直流分量
[P,F]=periodogram(ty,[],[],400); %求功率谱
plot(F, P) %画图

结果就是

» 本帖已获得的红花(最新10朵)

3楼2011-07-25 20:44:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★
xzhdty(金币+2): 欢迎常来 2011-07-25 20:57:22
dubo(金币+5, 程序强帖+1): 感谢应助 2011-07-31 14:26:41
另外说明:MATLAB的功率谱实现函数是像这样子的:
CODE:
function [P,f]=fftpsd(x,Fs)
    m = length(x);          % 整个数据长度
    n = pow2(nextpow2(m));  % 扩展到合适长度,2的整数次幂
    y = fft(x,n);           
    f = (0:n-1)*(Fs/n);     %频率范围
    P = y.*conj(y)/n;   %功率谱密度

    f=f(1:n/2);
    P=P(1:n/2);
   
    %plot(f,10*log10(P)); %把数据转换为dB
    plot(f,P);
    grid;
    xlabel('Frequency (Hz)');
    ylabel('Power(dB)');
    title('{\bf Periodogram}');

为了使用FFT算法(速度快),MATLAB把数据扩展了,本来降采样你的数据之后,一共有4000个点,但是实际上使用了4096个点。但是由于数据是实数序列,所以,仅有采样率一半的数据是有效的(后半部分其实是镜像),所以在图上,F和P都是2048个点(periodogram取了2049个,这个无所谓)
4楼2011-07-25 20:53:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 081700化工学硕调剂 +3 【1】 2026-03-16 3/150 2026-03-19 23:40 by edmund7
[考博] 申博26年 +3 八6八68 2026-03-19 3/150 2026-03-19 19:43 by nxgogo
[考研] 271材料工程求调剂 +6 .6lL 2026-03-18 6/300 2026-03-19 15:41 by haoshis
[考研] 本人考085602 化学工程 专硕 +17 不知道叫什么! 2026-03-15 19/950 2026-03-19 15:06 by 尽舜尧1
[考研] 一志愿天津大学化学工艺专业(081702)315分求调剂 +11 yangfz 2026-03-17 11/550 2026-03-19 15:06 by houyaoxu
[考研] 一志愿西安交通大学材料工程专业 282分求调剂 +5 枫桥ZL 2026-03-18 7/350 2026-03-19 14:52 by 功夫疯狂
[考研] 一志愿天大材料与化工(085600)总分338 +5 蔡大美女 2026-03-13 5/250 2026-03-19 10:44 by 是小刘呀~
[考研] 材料专业求调剂 +5 hanamiko 2026-03-18 5/250 2026-03-18 20:19 by 星空星月
[考研] 085601专硕,总分342求调剂,地区不限 +5 share_joy 2026-03-16 5/250 2026-03-18 14:48 by haxia
[考研] 0854可跨调剂,一作一项核心论文五项专利,省、国级证书40+数一英一287 +8 小李0854 2026-03-16 8/400 2026-03-18 14:35 by 搏击518
[考研] 收复试调剂生 +4 雨后秋荷 2026-03-18 4/200 2026-03-18 14:16 by elevennnne
[考研] 303求调剂 +4 睿08 2026-03-17 6/300 2026-03-18 11:01 by Iveryant
[考研] 材料,纺织,生物(0856、0710),化学招生啦 +3 Eember. 2026-03-17 9/450 2026-03-18 10:28 by Eember.
[考研] 301求调剂 +4 A_JiXing 2026-03-16 4/200 2026-03-17 17:32 by ruiyingmiao
[考研] 一志愿南京大学,080500材料科学与工程,调剂 +4 Jy? 2026-03-16 4/200 2026-03-17 11:02 by gaoqiong
[考研] [导师推荐]西南科技大学国防/材料导师推荐 +3 尖角小荷 2026-03-16 6/300 2026-03-16 23:21 by 尖角小荷
[考研] 药学383 求调剂 +3 药学chy 2026-03-15 4/200 2026-03-16 20:51 by 元子^0^
[考研] 0703化学调剂 290分有科研经历,论文在投 +7 腻腻gk 2026-03-14 7/350 2026-03-16 10:12 by houyaoxu
[考研] 330求调剂 +3 ?酱给调剂跪了 2026-03-13 3/150 2026-03-14 10:13 by JourneyLucky
[硕博家园] 085600 260分求调剂 +3 天空还下雨么 2026-03-13 5/250 2026-03-13 18:46 by 天空还下雨么
信息提示
请填处理意见