① 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('帶通濾波後的頻譜圖');