程序如下
fs=250;
N=1024;
n=0:N-1;
t=n/fs;
y=fft(x(:,1),N);
mag=abs(y);
f=n*fs/N;
plot(f,mag);
set(gca,'xtick',0:10:250)
由原始常微分方程的结果进行fft变换,求得频谱如下图:
我想求得频谱图中20,40,60,80,100,120hz处的幅值,然后求他们的比值,我该如何编写程序呢?望大神指教。
matlab fft变换求出频谱后,求具体点的幅值的问题
答案:2 悬赏:70
解决时间 2021-03-07 18:41
- 提问者网友:情系雨樱花
- 2021-03-07 01:44
最佳答案
- 二级知识专家网友:桃花别处起长歌
- 2021-03-07 02:15
你的mag中保存的就是幅值信息,你可以算一下频率对应的点,然后取该带点的值
比如 mag(20)应该就是,如果不是,看看是不是20-1 或20+1的点
比如 mag(20)应该就是,如果不是,看看是不是20-1 或20+1的点
全部回答
- 1楼网友:我叫很个性
- 2021-03-07 03:16
fft结果是关于采样频率一半共轭对称的
入如考虑幅值,就是关于采样频率一半对称的,只能给出0频到采样频率一半的频谱信息
因此fft结果通常只取前一半,而真实信号的幅度被平均分到前后各一半
所以要乘以2
而fft是积分变换,随着采样点数的增加,信号的总量会增加
例如同一个信号,如果由n个采样点变成2n个采样点
整个信号的积分就会成倍的增加,所以结果要除以n以抵销采样数对结果的影响
所以最后要乘以2,除以n,也就是除以 (n/2)
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯