① 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('带通滤波后的频谱图');