FIR
Cao.
Koeficijente Hilbertovog transformatora ces dobiti iz (u Matlabu):
Nr=10;
b=remez(Nr,[0.05 0.95],[1 1],'h');
Ispisi ove koeficijente u fajl jer po defaultu Matlab ispisuje samo 4-5 decimala. U nizu b se nalaze koeficijenti - ukupno 11. Nr je red filtra. Mora da bude paran broj (tj. broj koeficijenata je neparan). Ostavi mogucnost promene reda filtra. Matrica y je matrica koja se prosledjuje funkciji obrada.
U Matlabu filtriranje izgleda ovako:
iq=filter(b,1,y(:,ii));
sto je ekvivalentno sa:
niz=y(:,ii);
D=zeros(1,length(b));
IQ=zeros(length(niz),1);
for jj=1:length(niz)
D=[niz(jj) D(1:(length(D)-1))];
for kk=1:length(b)
IQ(jj)=IQ(jj)+D(kk).*b(kk);
end
end
Posle ovoga u nizu IQ se nalaze filtrirani podaci (podaci u kvadraturi = iq). (operator .* znaci mnozenje clan po clan, tj. prvi sa prvim, drugi sa drugim itd.)
Kasnjenje filtra (u semplovima) je Nr/2 (o ovome se mora voditi racuna pri racunanju daljine!), pa je potrebno zakasniti originalne podatke:
ip=[zeros(1,Nr/2) y(1:length(iq)-Nr/2,ii).'].'; - ovo su podaci u fazi
Kompleksni podaci su:
y(:,ii)=ip+j*iq;
qq=0:Nsam-1;
y(:,ii)=y(:,ii).*exp(-j*2*pi*qq/4).';
i oni se dalje obradjuju u minvar. Ovo je potrebno izvrsiti za svaki mikrofon posebno. Cela procedura izgleda ovako:
%Obrada podataka sa sonara
function [Z,Q]=obrada(n,dl,f,fs,tping,snr,K,nth,y,nsb)
c=350;
%Broj blokova
[Nsam,Nsen]=size(y);
nblock=ceil(Nsam/nsb);
Q=zeros(nblock,nth);
qq=0:Nsam-1;
%Remezova aproksimacija Hilbertovog transformatora
Nr=10;
b=remez(Nr,[0.05 0.95],[1 1],'h');
for ii=1:Nsen
iq=filter(b,1,y(:,ii)); %Funkcija Matlaba
%Rucno izracunavanje komponentne u kvadraturi
niz=y(:,ii);
D=zeros(1,length(b));
IQ=zeros(length(niz),1);
for jj=1:length(niz)
D=[niz(jj) D(1:(length(D)-1))];
for kk=1:length(b)
IQ(jj)=IQ(jj)+D(kk).*b(kk);
end
end
%Komponenta u fazi (zakasnjeni podaci)
ip=[zeros(1,Nr/2) y(1:length(iq)-Nr/2,ii).'].';
%Kompleksni podaci
y(:,ii)=ip+j*iq;
%Spustanje u osnovni opseg
y(:,ii)=y(:,ii).*exp(-j*2*pi*qq/4).';
end
%Ovo je isto u svim verzijama
for ii=1:floor(length(y)/nsb)
%Dolazni signali u ii-tom bloku
q=minvar(dl,nth,K,y((ii-1)*nsb+1:ii*nsb,:));
Q(ii,:)=q;
z=music3(dl,nth,K,y((ii-1)*nsb+1:ii*nsb,:));
Z(ii,:)=z;
end
--
___________________________________________________________
Sign-up for Ads Free at Mail.com
http://www.mail.com/?sr=signup
Previous by thread: Interim Report Next by thread: Za Gruju