suunnittelu lineaaristen vaihe FIR suodatin

J

john2020

Guest
Hi all,

minun hankkeen suunnittelun Lineaarisen vaihe FIR filter.it tavoitteena on tarjota käyttäjälle friendly paketit suunnittelemalla alhainen siirrä FIR suodattimen avulla ikkunointijärjestelmä suunnittelu technique.Design digitaalisen suodattimen liittyy määrittäminen siirtää tehtävän suodatin, joka täyttää tietyt suorituskyky specifications.I haluavat toteuttaa suodatin on tehtävä digitaalisen tietokoneen tehokas tietokone algorithms.can tahansa ehdottaa minulle joitakin ajatuksia, paras algoritmi tähän hankkeeseen?Minulla on idea siitä, miten käyttäjä voi suunnitella FIR alhainen pass-suodatin valitsemalla jokin seuraavista ikkunat: --

1) Hanning-ikkuna
2) Hamming ikkuna
3) Barlett ikkuna
4) Blackmann ikkunavastata minulle joitakin ehdotuksia tähän hankkeeseen, jos anyoen on ideoita.

terveisin
john

 
Matlab on fir1 toiminnon, se tarjoaa sinulle suodatin coeficients mukaan annettuja vaatimuksia.Siinä tehtäväryhmässä voit määritelty haluamasi ikkunan, luokan suodatin jne. ..

Erityisen Tein toimintoa Matlab että suorittaa FIR hanke, koska se on algoritmi voit kääntää mitään muuta kieltä, tullinpalautusjärjestelmässä sinulle on, että comenta ovat Portugali, mutta voit löytää tapa kääntää, Babelfish esimerkiksi ...Seuraavassa koodi:

% Funçao para calculo de filtros FIR
% Fc freqüęncia de corte ei caso de passband ou stopband fc DEVE ser um vetor fc = [FC1 FC2]
% Tw banda de transição
% Ap Atenuaç ~ ao da banda de passagem
% Kuten atenuaçăo da banda de rejeiçăo
% Fs freqüęncia de amostragem
% Tp tipo de filtro: 1-Passa Baixa, 2 - Passa alta, 3 - Passband 4-Stopband
%%%%%% Hn = myfir (fc, tw, Ap, As, Fs, tp)

toiminto hn = myfir (fc, tw, Ap, As, Fs, tp)
twn = tw / Fs;

% Todentamista se os ripples sao diferentes olettaa o Menorin dos Ripples para a banda de Rejeiçao

dp = (10 ^ (Ap/20)) -1; ds = 10 ^ (-As/20);
d = min (dp, DS);
jos dp <ds
DISP ( 'o valor da atenuaçao da banda de rejeiçao foi ajustado devido ao Kauko da banda de passagem ")
loppu
As = -20 * log10 (d);

% seleciona o tipo de filtro
kytkin tp
tapauksessa 1
fcn = (fc (tw / 2)) / Fs;
wcn = 2 * pi * fcn;
% Seleçao da Janela
[wd, titulo] = selectw (As, twn);
% Numéro de coeficientes tehdä filtro
Num = pituus (wd);
% Determinaçao da resposta ao impulso ihanteellinen
Numaux = (Num-1) / 2;
na = 1: Numaux;
hd = 2 * fcn * sin (na. * wcn). / (na. * wcn);
hdn = [fliplr (hd) 2 * fcn hd];
% Ajanelamento
hn = hdn .* wd;
% Grafico
freqz (hn, 1512, Fs), otsikko (titulo)

tapauksessa 2
% Normaliza kuin frequencias
fcn = (FC-(tw / 2)) / Fs;
wcn = 2 * pi * fcn;
% Seleçao da Janela
[wd, titulo] = selectw (As, twn);
% Numéro de coeficientes tehdä filtro
Num = pituus (wd);
% Determinaçao da resposta ao impulso ihanteellinen
Numaux = (Num-1) / 2;
na = 1: Numaux;
hd =- 2 * fcn * sin (na. * wcn). / (na. * wcn);
hdn = [fliplr (hd) 1-2 * fcn hd];
% Ajanelamento
hn = hdn .* wd;
% Grafico
freqz (hn, 1512, Fs), otsikko (titulo);tapaus 3
FC1 = fc (1);
FC2 = fc (2);
fc1n = (FC1-(tw / 2)) / Fs;
fc2n = (FC2 (tw / 2)) / Fs;
wc1n = 2 * pi * fc1n;
WC2N = 2 * pi * fc2n;
% Seleçao da Janela
[wd, titulo] = selectw (As, twn);
% Numéro de coeficientes tehdä filtro
Num = pituus (wd);
% Determinaçao da resposta ao impulso ihanteellinen
Numaux = (Num-1) / 2;
na = 1: Numaux;
hd = (2 * fc2n * sin (na. * WC2N). / (na. * WC2N)) - (2 * fc1n * sin (na. * wc1n). / (na. * wc1n));
hdn = [fliplr (hd) 2 * (fc2n-fc1n) hd];
% Ajanelamento
hn = hdn .* wd;
% Grafico
freqz (hn, 1512, Fs), otsikko (titulo)tapauksessa 4
FC1 = fc (1);
FC2 = fc (2);
fc1n = (FC1-(tw / 2)) / Fs;
fc2n = (FC2 (tw / 2)) / Fs;
wc1n = 2 * pi * fc1n;
WC2N = 2 * pi * fc2n;
% Seleçao da Janela
[wd, titulo] = selectw (As, twn);
% Numéro de coeficientes tehdä filtro
Num = pituus (wd);
% Determinaçao da resposta ao impulso ihanteellinen
Numaux = (Num-1) / 2;
na = 1: Numaux;
hd = (2 * fc1n * sin (na. * wc1n). / (na. * wc1n)) - (2 * fc2n * sin (na. * WC2N). / (na. * WC2N));
hdn = [fliplr (hd) 1-2 * (fc2n-fc1n) hd];
% Ajanelamento
hn = hdn .* wd;
% Grafico
freqz (hn, 1512, Fs), otsikko (titulo)

muuten
DISP (argumento incorreto na funçao ")
loppu

toiminto [wd, titulo] = selectw (As, twn);

Jos <= 21
wd = Retangular (twn);
titulo = 'Janela Retangular ";
elseif Kuten> 21 &
A <= 44
wd = JanelaHanning (twn);
titulo = 'Janela Hanning ";
elseif Kuten> 44 &
A <= 53
wd = JanelaHamming (twn);
titulo = 'Janela Hamming ";
elseif Kuten> 53 &
A <= 75
wd = JanelaBlackman (twn);
titulo = 'Janela Blackman ";
elseif Kuten> 75 &
A <= 90
wd = JanelaKaiser (twn, As);
titulo = 'Janela Kaiser ";
muuta> 90
DISP ( "O metodo tehdä ajanelamento não e adequado")
loppu
palata

% Hamming
toiminto wd = JanelaHamming (twn)
N = ceil (3.3/twn);
% Ajuste para N impar
R = rem (N, 2);
jos R> 0
N = N 1;
loppu
n = 0: N;
wd = 0.54-(0.46 * cos ((2 * pi .* n) / N));
palata

% Funçao utilizando metodo tehdä ajanelamento

% Boxcar

toiminto wd = Retangular (twn)
N = ceil (0.9/twn) 1;
% Ajuste para N impar
R = rem (N, 2);
jos R == 0
N = N 1;
loppu
wd = ovat (1, N);
palata

% Hanning

toiminto wd = JanelaHanning (twn)
N = ceil (3.1/twn);
% Ajuste para N impar
R = rem (N, 2);
jos R> 0
N = N 1;
loppu
n = 0: N;
wd = 0,5-0,5 * cos ((2 * pi .* n) / N);
palata

% Blackman
toiminto wd = JanelaBlackman (twn)
N = ceil (3.3/twn);
% Ajuste para N impar
R = rem (N, 2);
jos R == 0
N = N 1;
loppu
n = 0: N-1;

wd = 0,42-0,5 * cos ((2 * pi .* n) / (N-1)) 0.08 * cos ((4 * pi .* n) / (N-1));
palata

% janela Kaiser
toiminto wd = JanelaKaiser (twn, As)
N = ceil ((As-7.95) / (14.36 * twn)) 1;
% Ajuste para N impar
R = rem (N, 2);
jos R == 0
N = N 1;
loppu
Jos <= 21
B = 0;
elseif Kuten> 21 &
A <= 50
B = 0,5842 * (As-21) ^ 0.4 0.07886 * (As-21);
muuta> 50
B = 0,1102 * (Kuten-8,7);
loppu

wd1 = kaiser (N, B);
wd = wd1 ";
palata

 
hi claudiocamerakiitos paljon kallisarvoista information.Have olet toteuttanut ohjelmistoja C-ohjelma? jonka tunnet on paras ikkunointijärjestelmä tekniikka Linear vaihe FIR FILTER? kiitos jälleen

 
Vastatessaan kysymyksiin:

En ole toteuttanut FIR-koodi C-kieli vain Matlab-koodi, joka tapauksessa olen sitä mieltä, että on helppoa sinulle "kääntää" se C-koodi.

Ei ole parempaa ikkunassa valinta ikkunan riippuu hakemuksesi, tarkoitan, suodatetaan eritelmissä.Yleensä on olemassa kaupan off keskuudessa ripple, siirtyminen leveys ja lukumäärä coeficients.Lesken tekniikat eivät salli paljon joustavuutta ei tarjoaa optimaalisen ratkaisuja.Mielestäni se ei ole teidän tapauksessa, koska olet maininnut, että olet työskentelee hankkeessa, jossa on käytettävä ikkuna techiniques, mutta jos olet etsimässä optimaalinen täytäntöönpano käytä Park Mclellan / Remez algoritmeja, se käyttää optimointiehdotuksen tekniikoita löytää suodattimien kertoimia.

 
hi claudiocamera

Voitteko ehdottaa minulle hyvä kääntäjä muunnetaan kokoontumisvapauteen C ja päinvastoin? kiitos vastauksesta

terveisin
john

 
John,

En ole käytetty tässä tehtävässä, mutta mielestäni se riippuu c kääntäjään käytät ja jossa mikro-tai DSP-perhe olet työskennellyt.

On compiller alkaen DSP perheen että kun c koodi on koota se on syntynyt yksi kokoonpanijalle koodi rinnakkain, katso esimerkiksi Motorola GNU C Compiler varten DSP563xx.Kullekin. C-koodi on olemassa. ASM-koodia, joka on käännetty koodi C kokoonpanijalle jonka kääntäjä.

 
hi Claudio kamera

Kiitos teidän suggestion.i on tarkastettava ne out.i usko sen helposti saatavilla google haku vaihtoehto.

terveisin
john

 

Welcome to EDABoard.com

Sponsor

Back
Top