用【Matlab】设计一个去除30Hz信号中50Hz的信号的小程序.clc;clear;close all;%variablesf1=30;f2=50;phi=0;delt_t=0.001;N=512;m=0:N-1;fm=m/(N*delt_t);%signalt1=1:delt_t:2*pi;w=sin(2*pi*f1*t1+phi)+sin(2*pi*f2*t1+phi);%信号%频域滤波W
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/23 13:21:33
用【Matlab】设计一个去除30Hz信号中50Hz的信号的小程序.clc;clear;close all;%variablesf1=30;f2=50;phi=0;delt_t=0.001;N=512;m=0:N-1;fm=m/(N*delt_t);%signalt1=1:delt_t:2*pi;w=sin(2*pi*f1*t1+phi)+sin(2*pi*f2*t1+phi);%信号%频域滤波W
用【Matlab】设计一个去除30Hz信号中50Hz的信号的小程序.
clc;clear;close all;
%variables
f1=30;f2=50;phi=0;
delt_t=0.001;
N=512;
m=0:N-1;
fm=m/(N*delt_t);
%signal
t1=1:delt_t:2*pi;
w=sin(2*pi*f1*t1+phi)+sin(2*pi*f2*t1+phi);%信号
%频域滤波
W=abs(fft(w,N));
py1=W/512;
py2=py1*2;
py3=abs(py2)*2^0.5;
thisfilter(1:40/2)=1;
thisfilter(40/2:60/2)=0.1;
thisfilter(60/2:N)=1;
thispy3=thisfilter.*py3;%滤波
thisw=ifft(thispy3,N);%反傅里叶变换
%plot
figure;subplot(221);plot(fm,w(1:N),'k');
axis([0 500 -5 5]);
subplot(222);bar(fm,py3(1:N),'r','BarWidth',.2);
axis([0 200 0 2.5]);
subplot(223);bar(fm,thispy3(1:N),'r','BarWidth',.2);
axis([0 200 0 2.5]);
subplot(224);plot(fm,thisw(1:N),'k');
%
请教各位大侠如何改进滤波器和程序细节实现题目的要求~
这样的结果不是我想要的啊,抓狂ing~
用【Matlab】设计一个去除30Hz信号中50Hz的信号的小程序.clc;clear;close all;%variablesf1=30;f2=50;phi=0;delt_t=0.001;N=512;m=0:N-1;fm=m/(N*delt_t);%signalt1=1:delt_t:2*pi;w=sin(2*pi*f1*t1+phi)+sin(2*pi*f2*t1+phi);%信号%频域滤波W
W=fft(w,N);
thisfilter(1:17)=0.01;
thisfilter(18:499)=1;
thisfilter(500:N)=0.01;%%%W对应的50Hz的峰值最大,找到对应的两个最大峰值的位置
thispy3=thisfilter.*W;%滤波