导航:首页 > 编程语言 > 联邦滤波matlab程序

联邦滤波matlab程序

发布时间:2023-03-07 19:53:22

① matlab低通滤波程序,怎么用

h = freqs(b, a, w) 根据系数向量计算返回滤波器的复频域响应。

调用这个低通滤波器时,使用下面的函数

sf=filter(a,b,s); %s为需滤波的数据,sf经过你设计的低通滤波器以后的新数据

② MATLAB,FIR低通滤波器程序或者FDATool的参数设定

例题:

设计一个低通数字滤波器,给定抽样频率为fs=12000Hz,通带截止频率wp=0Hz,阻带起始频率ws=5000Hz(假设阻带衰减不小于-50dB)。

解答:

由于阻带衰减为50dB,查表,可选海明窗,其阻带最小衰减为53dB,过渡带宽度为6.6π/N。

MATLAB程序如下:

wp=0;%频率归一化

ws=5000*2/12000;

wdel=ws-wp;%过渡带宽

wn=0.5*(wp+ws);%近似计算截止频率

N=ceil(6.6*pi/wdel);%根据过渡带宽度求滤波器阶数

window=hamming(N+1);%海明窗

b=fir1(N,wn,window);%FIR滤波器设计

freqz(b,1,512);%查看滤波器幅频及相频特性



参考:

http://..com/question/350250283.html


你的问题没有说明衰减,我直接在网络上找的答案,使用海明窗的低通滤波器。我运行了下,语句是对的。

③ 急求:自适应联邦滤波算法的matlab仿真程序代码

clear
fs=1000;%采样频率1000hz
N=500;%采样点数
t=(0:1:N-1)/fs;
f=10;%正弦信号频率10hz
x=sin(2*pi*f*t)+randn(size(t));%被随机信号干扰的正弦信号

b = fir1(31,0.5); %由 = fir1(31,0.5); 产生32阶滤波器系数
n = 0.1*randn(1,500); % 通过以上滤波系统所加入的噪声
d = filter(b,1,x)+n; % 通过滤波器后的期望信号
delta = 0.005; % 设置自适应滤波器其中一个步长因子为0.005
ha = adaptfilt.lms(32,delta);%求出系统的滤波器系数
[y,e] = filter(ha,x,d);
delta0=0.001; %另一个步长因子为0.001作对比
ha=adaptfilt.lms(32,delta0);
[y0,e0]=filter(ha,x,d);
m=1:500;
figure(1);
plot(m,x,'g');
figure(2);
plot(m,e,'r',m,e0);
legend('delta=0.001','delta=0.005')
% subplot(2,1,1)
% plot(m,e0)
%

以上是基本的LMS算法

% 滤波型LMS算法滤波
M = 20; % 运行次数
N = 1000; % 信号的长度
n = 0:N-1;
s = sin(2*pi*n/10); % 初始信号
u = s + 0.36*randn(1,N); % 叠加噪声后的信号
% 信号叠加噪声波形图
figure(1);
plot(n,u);
title('信号叠加噪声波形图');
xlabel('n');ylabel('u');

y = zeros(1,N); % 初始化经过自适应滤波器后的信号为零向量
w = zeros(1,N); % 初始化自适应滤波器的权向量为零向量
e = zeros(N); % 初始化误差e(n)的为零向量
a = zeros(1,N); % 初始化前向滤波器的权向量为零向量
vare = zeros(N); % 初始化误差的平方e(n)^2的为零向量
estd = zeros(N); % 初始化均方误差E{e(n)^2}的为零向量
vare1 = ones(1,N); % 初始化误差的平方e(n)^2的为1向量
estd1 = ones(1,N); % 初始化均方误差E{e(n)^2}的为1向量
k = 10; % 自适应滤波器的阶数

e1 = zeros(1,N); % 初始化前向预测误差e1为零向量
e2 = zeros(1,N); % 初始化滤波向量e为零向量
y(1:k) = u(1:k);

mu0 = 0.0065; % 初始更新步长因子

% 初始化前向滤波器的权向量
a(1:11) = [ 0.1642 , 0.1341 , 0.0529,-0.0624 , -0.1586 ,-0.1932 , -0.1555 , -0.0599 , 0.0584, 0.1229 , 0.1106];

% 滤波型LMS算法滤波
for j = (k + 1):M
u = s + 0.36*randn(1,N); % 叠加噪声后的信号
for n=(k+2):N

mu = mu0/(1 + (n/100)); % 先搜索后收敛步长因子
e(j,n) = s(n) - w((n-1):(n+9)) * u(n:-1:(n-10))'; % 误差

e1(n) = u(n) + a((n-10):n)*u((n-1):-1:(n-11))'; % 前向预测误差

e2(n) = e(j,n) + a((n-10):n)*e(j,(n:-1:(n-10)))'; % 滤波

w(n:(n+10)) = w((n-1):(n+9)) + mu*e1(n:-1:(n-10))*e2(n); % 更新自适应滤波器的权向量

y(n) = w((n):(n+10)) * u((n):-1:(n-10))'; % 经过自适应滤波器后的信号

vare(j,n) =e(j,n)^2; % 误差的平方e(n)^2

estd(j,n) = vare(j,(1:n))*vare(j,(1:n))'/n; % 均方误差E{e(n)^2}
end
end
vare1 = (vare1*vare)/M; % 统计平均意义下e(n)^2
estd1 = (estd1*estd)/M; % 统计平均意义下学习曲线

% 滤波型LMS自适应滤波输出
figure(2);
plot(y);
title('mu = 0.0065时滤波型LMS自适应滤波输出');
xlabel('n');ylabel('y');
% 滤波型LMS自适应滤波器的e(n)^2的曲线
figure(3);
plot(vare1);
title('滤波型LMS自适应滤波器的e(n)^2的曲线 ');
xlabel('n');ylabel('e(n)^2');
% 滤波型LMS自适应滤波器的学习曲线图
figure(4);
plot(estd1);
title('滤波型LMS自适应滤波器的学习曲线图 ');
xlabel('n');ylabel('E[e(n)^2]');

希望可以帮到你

④ 关于用MATLAB设计对信号进行频谱分析和滤波处理的程序

完整的程序
%写上标题
%设计低通滤波器:
[N,Wc]=buttord()
%估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc
[a,b]=butter(N,Wc); %设计Butterworth低通滤波器
[h,f]=freqz(); %求数字低通滤波器的频率响应
figure(2); % 打开窗口2
subplot(221); %图形显示分割窗口
plot(f,abs(h)); %绘制Butterworth低通滤波器的幅频响应图
title(巴氏低通滤波器'');
grid; %绘制带网格的图像
sf=filter(a,b,s); %叠加函数S经过低通滤波器以后的新函数
subplot(222);
plot(t,sf); %绘制叠加函数S经过低通滤波器以后的时域图形
xlabel('时间 (seconds)');
ylabel('时间按幅度');
SF=fft(sf,256); %对叠加函数S经过低通滤波器以后的新函数进行256点的基—2快速傅立叶变换
w= %新信号角频率
subplot(223);
plot()); %绘制叠加函数S经过低通滤波器以后的频谱图
title('低通滤波后的频谱图');
%设计高通滤波器
[N,Wc]=buttord()
%估算得到Butterworth高通滤波器的最小阶数N和3dB截止频率Wc
[a,b]=butter(N,Wc,'high'); %设计Butterworth高通滤波器
[h,f]=freqz(); %求数字高通滤波器的频率响应
figure(3);
subplot(221);
plot()); %绘制Butterworth高通滤波器的幅频响应图
title('巴氏高通滤波器');
grid; %绘制带网格的图像
sf=filter(); %叠加函数S经过高通滤波器以后的新函数
subplot(222);
plot(t,sf); ;%绘制叠加函数S经过高通滤波器以后的时域图形
xlabel('Time(seconds)');
ylabel('Time waveform');
w; %新信号角频率
subplot(223);
plot()); %绘制叠加函数S经过高通滤波器以后的频谱图
title('高通滤波后的频谱图');
%设计带通滤波器
[N,Wc]=buttord([)
%估算得到Butterworth带通滤波器的最小阶数N和3dB截止频率Wc
[a,b]=butter(N,Wc); %设计Butterworth带通滤波器
[h,f]=freqz(); %求数字带通滤波器的频率响应
figure(4);
subplot(221);
plot(f,abs(h)); %绘制Butterworth带通滤波器的幅频响应图
title('butter bandpass filter');
grid; %绘制带网格的图像
sf=filter(a,b,s); %叠加函数S经过带通滤波器以后的新函数
subplot(222);
plot(t,sf); %绘制叠加函数S经过带通滤波器以后的时域图形
xlabel('Time(seconds)');
ylabel('Time waveform');
SF=fft(); %对叠加函数S经过带通滤波器以后的新函数进行256点的基—2快速傅立叶变换
w=( %新信号角频率
subplot(223);
plot(')); %绘制叠加函数S经过带通滤波器以后的频谱图
title('带通滤波后的频谱图');

阅读全文

与联邦滤波matlab程序相关的资料

热点内容
fgets空文件 浏览:857
传奇物品文件夹 浏览:352
word插入excel图表 浏览:690
xp系统搜索不到本地文件 浏览:39
什么网站可以找到拼团去西藏 浏览:247
javatask 浏览:50
MFC的文件名 浏览:972
cad自动保存的文件怎么关闭 浏览:667
zip文件密码多少 浏览:486
编程培训哪些好 浏览:324
如何把文件夹内容变成文档 浏览:509
小火箭幼儿编程怎么拿积分 浏览:158
火车票时刻表及票价数据库 浏览:94
求平均值java 浏览:767
linux如何分屏显示 浏览:257
手机可以直接填写pdf文件么 浏览:554
linux虚拟光驱软件 浏览:836
米2s最好的版本 浏览:640
小米6检测工具下载 浏览:540
桌面创建不了文件夹怎么回事 浏览:894

友情链接