Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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 - Fatal编程技术网

Matlab 如何过滤信号?

Matlab 如何过滤信号?,matlab,filter,Matlab,Filter,我需要通过我设计的模拟低通滤波器对时域简单信号进行滤波。我需要时域的输出信号 %LPF order=3; ripple = 1; %pass band ripple f_c= 22e6; [num1, den1] = cheby1(order, ripple, 2*pi*1.10*f_c, 'low', 's'); %Create input signal Fs=200e6; Ts=1/Fs; NFFT=2^12; Runtime=(NFFT-1)*Ts; t=0:Ts:Runt

我需要通过我设计的模拟低通滤波器对时域简单信号进行滤波。我需要时域的输出信号

%LPF
order=3;

ripple = 1; %pass band ripple
f_c= 22e6;

[num1, den1] = cheby1(order, ripple, 2*pi*1.10*f_c, 'low', 's');

%Create input signal

Fs=200e6;

Ts=1/Fs;

NFFT=2^12;

Runtime=(NFFT-1)*Ts;

t=0:Ts:Runtime

a_in=1;

phase_in=0;

y_in=a_in*sin(2*pi*fin*t+phase_in);  % 4096 points

我需要输出信号
y_out
在4096点的时域内。我需要做什么

我认为您必须使用信号处理工具箱的
filter()
功能。它将滤波器系数和要滤波的信号作为参数:

y = filter(b,a,x)
其中,
b
是分子系数,
a
是分母,
x
是要滤波的信号。输出向量通常与输入向量大小相同,因此,由于您的输入是4096个样本,因此您的输出也将是4096个样本。更多信息

因此,在你的情况下:

y_out = filter(num1, den1, y_in)

我认为您必须使用信号处理工具箱的
filter()
功能。它将滤波器系数和要滤波的信号作为参数:

y = filter(b,a,x)
其中,
b
是分子系数,
a
是分母,
x
是要滤波的信号。输出向量通常与输入向量大小相同,因此,由于您的输入是4096个样本,因此您的输出也将是4096个样本。更多信息

因此,在你的情况下:

y_out = filter(num1, den1, y_in)

谢谢你的回复。我已经试过了。。但是我得到了NaN值,我还认为我可以得到滤波器的脉冲响应:sys=tf(num1,den1);ss=脉冲(sys);ss=ss/最大值(ss);我不知道怎么做卷积,我也不知道之后的结果。。。如何调整点数?f_in=20e6。。。输入频率嘿,我试过zpk方法。。它仍然是相同的[z,p,k]=cheby1(顺序,涟漪,2*pi*1.10*f_c,'low','s');[nd]=zp2tf(z,p,k);y_out=过滤器(n,d,y_in);其他想法?
cheby1(…,'s')
为您提供了一个模拟滤波器。要过滤数字信号,您需要一个数字滤波器,因此您可以/需要使用
双线性
Matlab函数将模拟滤波器转换为数字滤波器(在您的例子中:
[z,p,k]=双线性(z,p,k,Fs);[b,a]=zp2tf(z,p,k);滤波器(b,a,y_in)
)。之后,过滤器功能也应按预期工作。模拟滤波器通常用硬件实现,或者用NI Multisim之类的软件模拟。谢谢你的回复。我已经试过了。。但是我得到了NaN值,我还认为我可以得到滤波器的脉冲响应:sys=tf(num1,den1);ss=脉冲(sys);ss=ss/最大值(ss);我不知道怎么做卷积,我也不知道之后的结果。。。如何调整点数?f_in=20e6。。。输入频率嘿,我试过zpk方法。。它仍然是相同的[z,p,k]=cheby1(顺序,涟漪,2*pi*1.10*f_c,'low','s');[nd]=zp2tf(z,p,k);y_out=过滤器(n,d,y_in);其他想法?
cheby1(…,'s')
为您提供了一个模拟滤波器。要过滤数字信号,您需要一个数字滤波器,因此您可以/需要使用
双线性
Matlab函数将模拟滤波器转换为数字滤波器(在您的例子中:
[z,p,k]=双线性(z,p,k,Fs);[b,a]=zp2tf(z,p,k);滤波器(b,a,y_in)
)。之后,过滤器功能也应按预期工作。模拟滤波器通常用硬件实现,或者用NI Multisim之类的软件模拟。这是一个模拟滤波器。。使用'freqs'功能我的错,跳过了's',你是对的,这是一个模拟过滤器。。使用“freqs”功能我的错,跳过了“s”,你是对的