Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 对给定信号应用滤波器_Matlab_Filter_Filtering_Signal Processing - Fatal编程技术网

Matlab 对给定信号应用滤波器

Matlab 对给定信号应用滤波器,matlab,filter,filtering,signal-processing,Matlab,Filter,Filtering,Signal Processing,假设我们有以下信号 function [ x ] = generate1(N,m,A3) f1 = 100; f2 = 200; T = 1./f1; t = (0:(N*T/m):(N*T))'; %' wn = randn(length(t),1); %zero mean variance 1 x = 20.*sin(2.*pi.*f1.*t) + 30.*cos(2.*pi.*f2.*t) + A3.*wn; %[pks,locs] = findpeaks(x); %plot(x) en

假设我们有以下信号

function [ x ] = generate1(N,m,A3)
f1 = 100;
f2 = 200;
T = 1./f1;
t = (0:(N*T/m):(N*T))'; %'
wn = randn(length(t),1); %zero mean variance 1
x = 20.*sin(2.*pi.*f1.*t) + 30.*cos(2.*pi.*f2.*t) + A3.*wn;
%[pks,locs] = findpeaks(x);
 %plot(x)
end
使用生成代码

y=generate1(3,500,1);

现在假设我想要频率低于150的所有组件,所以我需要低通滤波器,但如何在这种情况下应用?请告诉我,我在滤波器设计问题上是新手,我可以自己构造滤波器吗?提前感谢诸如此类的工作:

function [ x ] = generate1(N,m,A3)
f1 = 100;
f2 = 200;
T = 1./f1;
t = (0:(N*T/m):(N*T))'; %'
fs = m/(T*N);
cutoff = 150;


wn = randn(length(t),1); %zero mean variance 1
x = 20.*sin(2.*pi.*f1.*t) + 30.*cos(2.*pi.*f2.*t) + A3.*wn;

[b,a] = butter(4, cutoff/(fs/2));

x_filt = filtfilt(b,a,x);
figure; plot(t,x)
hold on
plot(t,x_filt)
%[pks,locs] = findpeaks(x);
%plot(x)
end

对butter函数的调用构造了一个四阶butterworth低通滤波器,其截止频率由上述截止参数指定(在我们的示例中为150Hz)。“a”和“b”值是滤波器系数,它们通过filtfilt()命令应用于x向量。结果“x_filt”是x的过滤版本,其中包含小于150Hz的频率分量。

请查看MATLAB butter()命令。您可以传入规范化频率和截止值,并指定高通滤波器,它将返回滤波器系数。然后可以使用filtfilt()函数应用过滤器。很简单。注意:如果你想要频率低于150,你实际上想要一个低通滤波器,但是滤波器的设计方法应该是相同的。是的,你是对的,对不起,这是错的,请仅举一个例子来说明如何应用它,把它作为一个答案发布现在[b,a]=butter(4,cutoff/(fs/2));x_filt=filt(b,a,x);do?它是否会返回四阶低通滤波器?低通滤波器对噪声的影响是什么?在这种情况下,大多数噪声处于较高的频率,因此低通滤波器平滑信号并去除大部分噪声。如果您将wn设置为零(长度(t),1),或仅输入0作为第三个函数输入,您可以看到滤波器在去除噪声分量方面的效果。非常感谢,所以当我们知道噪声位于高频时,最好使用低通滤波器,对吗?