%%%%%%%%%%%% OPTIMALNI FILTRACE rand('twister',sum(100*clock)); n = 100000; h = [1 1 1]./3; %impulsni char-ka systemu, jehoz vystup budeme predikovat x = randn(1,n)-0.5; %gaussovsky bily sum %x = x_nestacionarni; %figure, plot(x); d = filter(h,1,x); %kyzeny (desired) vystupni signal systemu %d = conv(x,h,'valid'); N = 2; %rad predikcniho filtru x = flipdim(x,2); %prevraceni poradi vzorku - prvnimu indexu odpovida posledni vzorek x(n) d = flipdim(d,2); %prevraceni poradi vzorku - prvnimu indexu odpovida posledni vzorek d(n) [X,R] = corrmtx(x,N-1,'autocorrelation'); %vypocet autokorelacni matice R p = xcorr(x,d,N-1,'biased');%vektor vzajemnych korelaci delka = length(p); %delka vektoru p: 2*(N-1)+1 p = p(ceil(delka/2):end)'; %orezani druhe poloviny vektoru. %index ceil(delka/2) odpovida vzajemne korelaci s nulovym zpozdenim. %index end odpovida zpozdeni N-1 %w=R\p %vypocet vah optimalniho predikcniho filtru w=inv(R)*p %totez jako w=inv(R)*p;