24小时热门版块排行榜    

查看: 3760  |  回复: 6

Licfits

新虫 (初入文坛)

[求助] 使用matlab的fft和ifft函数,将某个指定的频率成分去除掉! 已有1人参与

我有一段采集到的周期信号,通过fft后发现频谱中出现了一个比较高的干扰频率成分,例如2000Hz,我在fft后得到的复向量中将这个频率成分(实际包括正负频率)对应的复数赋零,在进行ifft后观察时域波形的变化,然后再做fft,但是发现第二次fft后那个干扰频率成分依然有,只是幅值比原来的值小了许多,大概是原来的1/10。请问这是为什么呢?如何才能将这个频率成分去除干净呢?谢谢!
回复此楼

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

程序 信号处理

» 猜你喜欢

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

qqinly

专家顾问 (著名写手)

至人无己,神人无功,圣人无名

学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?
2楼2018-08-25 07:55:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

★ ★
jjdg: 金币+2, 感谢参与 2018-09-02 22:39:00
https://dsp.stackexchange.com/questions/35410/delete-frequency-components-with-fft-and-ifft
CODE:
N = 1000;
signal = randn(N, 1);

N_clear = 490;

% Remove the calls to fftshift, if you want to delete the lower frequency components
S = fftshift(fft(signal));   
S_cleared = S;
S_cleared(1:N_clear) = 0;
S_cleared(end-N_clear+2:end) = 0;
S_cleared = fftshift(S_cleared);

signal_cleared = ifft(S_cleared);

subplot(2,2,1);
plot(signal);
title('input signal');

subplot(2,2,2);
plot(abs(S));
title('input spectrum');

subplot(2,2,3);
plot(abs(S_cleared));
title('output spectrum');

subplot(2,2,4);
plot(signal_cleared);
title('output signal');

3楼2018-08-29 06:55:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Licfits

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by FMStation at 2018-08-29 06:55:16
https://dsp.stackexchange.com/questions/35410/delete-frequency-components-with-fft-and-ifft

N = 1000;
signal = randn(N, 1);

N_clear = 490;

% Remove the calls to fftshift, if you want to del ...

谢谢,理解了!
4楼2018-09-02 20:39:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

匿名

用户注销 (小有名气)

本帖仅楼主可见
5楼2018-11-03 23:39:39
已阅   申请程序强帖   回复此楼   编辑   查看我的主页

匿名

用户注销 (小有名气)

本帖仅楼主可见
6楼2018-11-04 14:40:30
已阅   申请程序强帖   回复此楼   编辑   查看我的主页

ntrf

木虫 (正式写手)

我是火星人
7楼2018-11-06 14:55:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Licfits 的主题更新
信息提示
请填处理意见