在Matlab中已知频率响应曲线如何设计滤波器

作者&投稿:宓王 (若有异议请与网页底部的电邮联系)
在matlab中,已知滤波器的系数怎样求滤波器的频率响应呢~

例:y(n)=x(n)-x(n-3)
%减法滤波器
clear all;
clc;
fs=600;
b=[1,0,0,-1];
a=[1];
[h,f]=freqz(b,a,256,fs);
mag=abs(h);
ph=angle(h);
ph=ph*180/pi;
subplot(2,1,1)
plot(f,mag);
grid on
xlabel('频率(Hz)');
ylabel('幅频特性');
subplot(2,1,2)
plot(f,ph);
grid on
xlabel('频率(Hz)');
ylabel('相频特性');

b=1;
a=[843,-654519,-588988,-523459,-457934,-392411,-326891,-195838,-64787,66262,328381,590498,918149,1311335,1835592,2359848,3080711,3801575,4719046,5702053,6750596,7930212,9240901,10682663,12189962,13828334,15597779,17432762,19333283,21299341,23330937,25428071,27590743,29753416,31916090,34013231,36175908,38273052,40304660,42270734,44171273,45940741,47579137,49151999,50528253,51773435,52822010,53673977,54394872,54853623,55181302]
fvtool(b,a);
单击工具栏第三个按钮,就可以观察到幅频特性,

这个能不能用自适应滤波器来做?
原理是:
如果把通信信道看成是一个“黑箱”,仅知道“黑箱”的输入和输出;以一个自适应滤波器作为这个“黑箱”的模型,并且使滤波器具有与“黑箱”同样的输入和输出。自适应滤波器通过调制自身的参数,使滤波器的输出与“黑箱”的输出相“匹配”。这里的“匹配”通常指最小二乘意义上的匹配。这样,滤波器就模拟了通信信道对信号的传输行为。尽管自适应滤波器的结构和参数与真实的通信信道不一样,但是它们在输入、输出响应上保持高度一致。

你现在知道了频率响应,就有了验证模型的数据,所以是可以做做来的。
给你一个例子:
clear
clc
ee=0;
fs=800;
det=1/fs;
f1=100;
f2=200;
t=0:det:2-det;
x=randn(size(t))+cos(2*pi*f1*t)+cos(2*pi*f2*t);
上面是输入信号x
假设你输出是经过一个滤波器后的数据

[b,a]=butter(5,150*2/fs);
d=filter(b,a,x);

本题中你已经知道d,存放在数组h中

下面就可以设计自适应FIR滤波器
N=5;
delta=0.06;
M=length(x);
y=zeros(1,M);
h=zeros(1,N);
for n=N:M
x1=x(n:-1:n-N+1);
y(n)=h*x1';
e(n)=d(n)-y(n);
h=h+delta.*e(n).*x1;
end
X=abs(fft(x,2048));
Nx=length(x);
kx=0:800/Nx:(Nx/2-1)*(800/Nx);
D=abs(fft(d,2048));
Nd=length(D);
kd=0:800/Nd:(Nd/2-1)*(800/Nd);
Y=abs(fft(y,2048));
Ny=length(Y);
ky=0:800/Ny:(Ny/2-1)*(800/Ny);
figure(1);
subplot(3,1,1)
plot(kx,X(1:Nx/2));xlabel('Hz')
title('原始信号频谱')
subplot(3,1,2)
plot(kd,D(1:Nd/2))
title('经未知系统后信号频谱');xlabel('Hz')
subplot(3,1,3)
plot(ky,Y(1:Ny/2))
title('经自适应FIR滤波器后信号频谱');xlabel('Hz')

你会发现的确该自适应滤波器的性能是符合要求的。

我怎么没听说过啊?


matlab中,已知表示成矩阵形式的弧线方程,怎么转化成直角坐标呢?_百度...
直接利用公式关系转化 x=R(t).*cos(θ(t));y=R(t).*sin(θ(t));z=z(t);

matlab中如何计算已知曲线的长度?
举个例子,就是分别计算没个线段的长度,然后再加起来:x = [ 0 1 2 ];y = [ 0 0 1 ];len = sum( sqrt( diff( x ).^2 + diff( y ).^2 ) )计算结果:len = 2.4142

Matlab中,如何根据已知的直方图,近似求得其概率密度函数图呢?_百度知 ...
举个例子 X=normrnd(10,4,1380000,1);%生成1380000个均值为10标准差为4的正态分布随机数 [mu,sigma]=normfit(X(:))%对这些数据进行正态分布拟合 hist(X,-10:.1:60);axis([-10,60,0,14000]);figure fplot(@(x)normpdf(x,mu,sigma),[-20,40]);ylim([0,.12])...

Matlab中,已知向量a=【1 1 1】,运行“poly(a)”得到结果为多少_百度知 ...
运行结果为:>> a=[1,1,1];>> poly(a)ans = 1 -3 3 -1因为poly()表示用给定的参数为多项式的方程的根来构造多项式,那么上面的代码表示一个多项式方程有三个相等的实根1,也就是f(x)=(x-1)^3=x^3-3x^2+3x-1,其系数就是:1 -3 3 -1 ...

matlab怎么把一组已知的点画在坐标图上?
1、双击matlab软件图标,打开matlab软件,可以看到matlab软件的界面。2、使用直接输入法,创建二维矩阵A,其中 A=[1,2,3,4,5,6,7,8,9;2,4,6,8,10,12,14,16,18]。3、将二维矩阵进行分解,分解为两个一维矩阵Ax、Ay,其中Ax表示二维矩阵的x坐标,Ay表示二维矩阵的y坐标。4、使用函数plot(Ax...

matlab已知自变量的取值范围求最大值
如何用matlab在已知自变量的取值范围下求最大值?题主的问题可以解决:1、根据函数表达式为f=QR(1-D),自定义其目标函数,fmincon_fun(x),即 f=-Q*R*(1-D); 这里负号表示最大值 2、根据约束条件,自定义其约束函数,fmincon_con(x),即 g(1)=Q-10; %Q>10;g(2)=R-0.04; %R>0....

matlab中已知x,y数据,如何非线性拟合得到方程y=a\/(1+(a\/60.2-1)*exp...
先输入x和y的数据。然后在matlab的工作栏输入cftool.在弹出来的拟合工具箱内选择变量为你的x和y.然后右边的拟合方法选择custom equation,然后输入你要拟合的式子的形式,按fit就可以拟合了。

MATLAB中已知A = [ 8 1 6; 3 5 7; 4 9 2 ]; 请教A([3 2],2:-1:1...
即从A的第三行到第二行,并且从第二列到第一列的那四个数组成的一个2*2的小矩阵 9 4 5 3 那个-1是步长

matlab中已知状态方程,怎么求等效传递函数与零极点模型?
一般已知状态方程 dx\/dt=Ax+Bu y=Cx+Du 要求其传递函数和零极增益,可以使用如下代码 sys=ss(A,B,C,D)tfun=tf(sys)zpm=zpk(sys)楼主可以看看ss、tf和zpk的帮助文档.

MATLAB中已知一个矩阵A, A(A)是什么意思
举个例子 a=[3 2;3 5;7 1]; b=[1 4 3 3;1 1 2 2]; e=a(b)结果 e = 3 2 7 7 3 3 3 3分析:对a中数据,按照列进行编号1--6,b中元素表示取a中对应编号的数据。

闵行区13661085004: 知道频率响应函数,怎么用matlab绘制出其曲线 -
务奔永颖: freqz

闵行区13661085004: 已知y'''(t)+4y''(t)+6y'(t)+2y(t)=f''(t) - f(t)用MATLAB如何求频率响应H(jw),谢谢哦 -
务奔永颖: b=[1,0,-1]; a=[1,4,6,2]; [Hjw,w]=freqs(b,a);

闵行区13661085004: matlab 中 re、im、mag、phase、gm、pm、wcp、wcg分别计算的是什么指标? -
务奔永颖: re:奈奎斯特在频率为w时,频率响应的实部; im:奈奎斯特在频率为w时,频率响应的虚部; w:响应频率(单位:rad/sec)mag:波特图在频率为w时,频率响应的幅值; phase:波特图在频率为w时,频率响应的相位; w:响应频率(单位:rad/sec)gm:幅值裕度; pm:相角裕度; wcp:相角交界频率; wcg:截止频率;

闵行区13661085004: 在matlab中,已知系统阶跃响应曲线的拐点,怎么画过该拐点的切线? -
务奔永颖: 取拐点及旁边的一个点,两点确定直线即可. [y,t]=step(tf(1,[1 3 1])); plot(t,y,'.-') dy=diff(y)./diff(t); [my,idx]=max(dy) hold on plot(t(idx),y(idx),'ro') k=(y(idx+1)-y(idx))/(t(idx+1)-t(idx)); t1=t(1);y1=y(idx)+k*(t1-t(idx)); t2=t(end);y2=y(idx)+k*(t2-t(idx)); plot([t1 t2],[y1 y2],'m:') axis([0 15 0 1.1])

闵行区13661085004: 如何用matlab软件画出已知图形的曲线图? -
务奔永颖:方法步骤 1、第一步要提取曲线图尽可能多的特征点,推荐一款软件GetData2.2,很多网站提供这款软件的下载,下载下来安装完后打开这款软件. 2、选择file->open image,打开想要的曲线图,选择operations—>set the scale,设定图片的坐...

闵行区13661085004: 已知曲线,如何用matlab确定曲线方程. -
务奔永颖: 这应该是通过标定曲线,求拟合曲线吧.也就是找出一条线使得其与标定曲线最重合.首先设出你的拟合曲线方程(一般是直线):y=kx+b,你上图的曲线应该是通过若干个点描绘出来的吧,然后你就将这些点的x值都代入到拟合方程中得到一系列y值,然后与给出点的y值进行差方,然后加起来,得总差方值,这个值最小时对应的拟合曲线就是你要求的曲线.一般有3种方法1.两点法,即首尾两点相连,这种方法简单,但精度不高.2.最小二乘法,也就是利用矩阵求取3.智能算法,也就是优化算法,这种用的不多,不过超好用,我一直用的是PSO优化算法来做的,效果很不错.Ps:有点乱,so so so so sorry 啊

闵行区13661085004: 用Matlab画出几种窗函数的频率响应 -
务奔永颖: 我举个例子好了. 矩形窗的窗函数是w=boxcar(n); 其中n是窗长度.输入这三行代码就可以看到矩形窗的频率响应了. n=100;w=boxcar(n);fvtool(w); 如果你想看其他窗函数的频率响应,把boxcar换掉就可以了. (1)矩形窗(Rectangle ...

闵行区13661085004: 在matlab中,已知频率 如何生成声音 -
务奔永颖: 你说的频率曲线是什么东西,是频谱吗 我觉得你那数据就是波形数据,一秒时间,采样频率44.1kHz 刚好44100个采样点 f=[.....]; t=(1:44100).*1/44.1e3; plot(t,f)% sound(f) wavwrite(f,44.1e3,'sound.wav')

闵行区13661085004: 如何用matlab求阶跃响应曲线,高手帮帮忙,谢谢 -
务奔永颖: http://hiphotos.baidu.com/lamed123/pic/item/249ee1c48b82c2d238db4906.jpg这个是脉冲响应曲线http://hiphotos.baidu.com/lamed123/pic/item/11d24e0e4eaa94d37acbe107.jpg这个是单位阶越响应曲线. 里面的图片有对应的指令,你看吧.....在我空间里/// 用STEP('函数','时间')

闵行区13661085004: matlab见多识广的人来看看,关于freqz -
务奔永颖: MATLAB提供了专门用于求离散系统频响特性的函数freqz(),调用freqz()的格式有以下两种: l [H,w]=freqz(B,A,N) B和A分别为离散系统的系统函数分子、分母多项式的系数向量,N为正整数,返回量H则包含了离散系统频响 在 0——pi范...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网