24小时热门版块排行榜    

查看: 5379  |  回复: 12
本帖产生 1 个 程序强帖 ,点击这里进行查看

whfire

金虫 (正式写手)

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

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

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

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

matlab 频谱

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

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

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★
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的回帖

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的回帖

mogul

金虫 (小有名气)

引用回帖:
696000楼: Originally posted by sudo at 2011-07-25 20:28:50
唉,可能解释起来一言难尽~建议楼主阅读一下信号处理的入门书嗯

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

[P,F]=periodogram(x, window, nfft, Fs)
[Pxx,w] = periodogram(x,window,nfft) uses the modified periodogram to estimate the PSD while specifying the length of the FFT with the integer nfft.
"If you set nfft to the empty vector [], it takes the default value
for N listed in the previous syntax. "(ref, matlab help)
"If you set nfft to the empty vector [], nfft defaults to min(256,length(x)" (ref, 薛年喜. MATLAB在数字信号处理中的应用(第2版). p286)
6楼2013-03-13 22:04:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

sudo

木虫 (正式写手)


dubo(金币+1): 欢迎常来程序语言版讨论 2011-07-31 14:26:48
还有一个需要补充~

可能你会疑惑,第一列数据(时间)为什么计算中没用到?

实际情况是,我只需要知道,你的第二列序列是等间隔采样出来的,以及他们之间的间隔(采样周期),这就足够了。虽然我也是从第一列算出来的,不过其实第一列并不需要全部给出来
5楼2011-07-25 20:56:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

夏天summer

铜虫 (小有名气)

看起来很厉害。。
时间如拉车的牛。
7楼2013-07-10 10:33:17
已阅   回复此楼   关注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的回帖

mallory19

新虫 (初入文坛)

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

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

sudo,你好。
我在用Mathematica中的Periodogram和PeriodogramArray对同一个数据列表计算时,得到的结果却不同。我在网上查了一下,也有别人在问这个问题。但没有回答。
不知道你对Mathematica是否了解,是否可以交流一下。
9楼2014-04-03 23:53:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

whfire

金虫 (正式写手)

引用回帖:
9楼: Originally posted by mallory19 at 2014-04-03 23:53:13
sudo,你好。
我在用Mathematica中的Periodogram和PeriodogramArray对同一个数据列表计算时,得到的结果却不同。我在网上查了一下,也有别人在问这个问题。但没有回答。
不知道你对Mathematica是否了解,是否可以 ...

不好意思,我也不懂
10楼2014-04-04 08:12:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 whfire 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 九部门发文:不得将专利授权数量作为人才评价、项目评审、职称评定、高校评价等的条件 +16 sjtu2012 2024-05-28 19/950 2024-06-01 15:24 by 天外飞去来
[论文投稿] 没收到邮件 10+3 荣小撇 2024-05-31 7/350 2024-06-01 15:04 by arthas_007
[硕博家园] 实验室太吵闹,无法安静学习,怎么办? +6 utahh 2024-05-31 11/550 2024-06-01 13:27 by utahh
[考博] 申博求助?本硕双非一篇三区和四区去985工科非天坑专业有没有希望? +4 LYS1200 2024-05-29 6/300 2024-06-01 08:50 by 学术渣渣神
[考博] 导师不让硕转博,让我去国外读博,能理解吗? +11 萧山幽谷 2024-05-29 19/950 2024-05-31 21:32 by 萧山幽谷
[考博] 广东以理材料系碳点与功能材料课题组 — 2博士名额 / 科研助理 +4 小城夜很美 2024-05-27 11/550 2024-05-31 21:26 by 小城夜很美
[基金申请] 基金上会 +20 mrKiller 2024-05-25 34/1700 2024-05-31 20:47 by osisa
[考博] 申请2024或2025年博士研究生 +5 嘟噜嘟1 2024-05-29 11/550 2024-05-31 19:27 by 嘟噜嘟1
[找工作] 找工作如此之难 +7 探123 2024-05-25 7/350 2024-05-31 15:58 by 平南小刀
[基金申请] 入职高校3年发表10+SCI,尽人事听天命 +29 kaoyan250 2024-05-27 40/2000 2024-05-31 08:44 by Xiaolin81
[材料综合] 真空封石英管 北京 +4 dessha 2024-05-29 5/250 2024-05-30 16:40 by mpdfwxgui
[有机交流] 液相纯度高,但产品析不太出来 10+4 cui19236 2024-05-27 9/450 2024-05-30 07:45 by yuanjijoy
[硕博家园] 论大家对6070后普通教授导师的看法 +5 SNaiL1995 2024-05-28 9/450 2024-05-29 21:54 by SNaiL1995
[考博] 24年博士招生 +7 abinit432 2024-05-27 9/450 2024-05-29 17:16 by 中国银河
[基金申请] 信息学部函评结束了吗? +6 ducan21 2024-05-28 7/350 2024-05-29 12:10 by WORLD0256
[论文投稿] 高手朋友推荐比较容易投稿和录用的SCI期刊,不投稿收费SC,对分区没有要求 5+3 xintangren 2024-05-28 4/200 2024-05-29 10:46 by xintangren
[论文投稿] EI学报,一审返修后,为啥不再送审,直接终审中? +4 qweasd12345 2024-05-27 6/300 2024-05-29 00:02 by dut_ameng
[有机交流] 机理求助 120+4 15147165026 2024-05-26 10/500 2024-05-28 14:42 by 江东闲人
[有机交流] 奇怪的物质 100+4 桃桃PXS 2024-05-27 7/350 2024-05-28 10:22 by 091602
[硕博家园] 求助 +3 单增李斯特21633 2024-05-25 3/150 2024-05-27 10:33 by hahamyid
信息提示
请填处理意见